php 快速入门(四)

一、文件操作

1.1 文件基础操作

1.1.1 打开文件

在PHP中,我们可以使用fopen()函数来打开一个文件,该函数接收两个参数:

文件名和打开模式。

打开模式可以使"r"(只读模式)、"w"(写入模式)、"a"(追加模式)等。

fopen 函数的格式

fopen("文件名","打开模式")

|----|---------------------------------|
| 模式 | 描述 |
| r | 只读。在文件的开头开始。 |
| r+ | 读/写。在文件的开头开始。 |
| w | 只写。打开并清空文件的内容;如果文件不存在,则创建新文件。 |
| w+ | 读/写。打开并清空文件的内容;如果文件不存在,则创建新文件。 |
| a | 追加。打开并向文件末尾进行写操作,如果文件不存在,则创建新文件 |
| a+ | 读/追加。通过向文件末尾写内容,来保持文件内容。 |
| x | 只写。创建新文件。如果文件已存在,则返回FALSE和一个错误。 |
| x+ | 读/写。创建新文件,如果文件已存在,则返回FALSE和一个错误 |

下面是一个打开文件的实例:

php 复制代码
$file = fopen("example.txt","r");

打开文件案例:

php 复制代码
<?php
    header("content-type:text/html;charset=utf-8");
    $file = "a111.txt";
    
    // fopen()打开文件的时候,如果打开成功,则返回真,如果打开失败,则返回假
    // 在函数前面加上@可以屏蔽掉函数的报错和警告输出
    $fileObj = @fopen($file,"r");
    if($fileObj)
    {
        echo "打开文件成功<br>";
    }
    else
    {
        echo "打开文件失败<br>"
        exit();
    }
?>
1.1.2 读取文件

逐行读取文件

fgets() 函数用于从文件中逐行读取文件。

注释: 在调用该函数之后,文件指针会移动到下一行。

实例:下面的实例逐行读取文件,直到文件末尾为止;

php 复制代码
<?php
    header("conteent-type:text/html;charset=utf-8");

    //定义文件名
    $file = "a.txt";
    
    //打开文件
    $fileObj = @fopen($file,"r");

    //判断文件是否打开成功
    if($fileObj)
    {
        echo "打开文件成功<br>";
    }
    else
    {
        echo "打开文件失败<br>";
        exit();
    }

    //从文件中读取内容
    while(!feof($fileObj))    # feof() 判断指针是否指向文件的末尾,如果是的话,则为真
    {
        //fgets() 执行一次,就会从打开的文件中读取一行
        //读取了一行一行,指针就会向后移动一行
        $content = fgets($fileObj);
    
        //输出读取的这行的内容
        echo "$content <br>";

        echo "<hr>";
    }
    fclose($fileObj);
?>

feof() 函数检查是否已到达文件末尾(EOF)。

如果出错或者文件指针到了文件末尾(EOF)则返回TRUE,否则返回FALSE

逐字符读取文件

fgetc() 函数用于从文件中逐字符地读取文件
**注释:**在调用该函数之后,文件指针会移动到下一个字符。

实例:逐字符读取文件,直到文件末尾为止。

php 复制代码
<?
    header("content-type:text/html;charset=utf-8");
    
    // 定义文件名
    $file = "a.txt";
    
    // 打开文件
    $fileObj = @fopen($file,"r");

    // 判断文件是否打开文件
    if($fileObj)
    {
        echo "打开文件成功<br>";
    }
    else
    {
        echo "打开文件失败<br>";
        exit();
    }
    
    // 从文件中读取内容
    while(!feof($fileObj))    #  feof() 判断指针是否指向文件的末尾,如果是的话,则为真
    {
        // fgetc() 执行一次,就会从打开的文件中读取一个字符
        // 读取了一个字符,指针就会向后移动一位
        // 英文字母和数字,一个字符就是一个,但是一个汉字,占用2-6个字符,具体要看编码类型
        $content1 = fgetc($fileObj);
        $content2 = fgetc($fileObj);
        $content3 = fgetc($fileObj);
        $content4 = fgetc($fileObj);

        // 输出读取的这行的内容
        echo "$content1";
        echo "$content2";
        echo "$content3";
        echo "$content4";
        
        echo "<br>";
    }

    fclose($fileObj);
?>

读取全部内容:fread

php 复制代码
<?php
    header("content-type:text/html;charset=utf-8");

    // 定义文件名
    $file = "a.txt";
    
    // 打开文件
    $fileObj = @fopen($file,"r");
    
    // 判断文件是否打开成功
    if($fileObj){
        echo "打开文件成功<br>";
    } else {
        echo "打开文件失败<br>";
        exit();
    }
    
    $content = fread($fileObj,filesize("a.txt"));
    fcloes($fileObj);
    
    echo $content;
?>

fread函数

  • fread() 函数读取打开的文件。
  • 函数会到达指定长度或读到文件末尾(EOF)时(以先到者为准),停止运行。
  • 该函数返回读取的字符串,如果失败则返回 FALSE
php 复制代码
string fread ( resource $handle,int $lenngth)

filesize函数

  • filesize() 函数返回指定文件的大小。
  • 如果成功,该函数返回文件大小的字节数。如果失败,则返回 FALSE。
1.1.3 写入文件

与读取文件类似,我们可以使用fwrite()函数来向文件中写入内容。下面是一个写入文件的示例:

php 复制代码
<?php
    header("content-type:text/html;charset=utf-8");
    
    // 定义文件名
    $file = "a.txt";

    // 打开文件
    $fileObj = @fopen($file,"r");

    // 判断文件是否打开成功
    if($fileObj)
    {
        echo "打开文件成功<br>";
    }
    else
    {
        echo "打开文件失败<br>";
        exit();
    }
    
    // fwrite() 向文件写入内容的时候,则返回的是写入到文件的字符个数
    // php中,数字0表示假,非0表示真,因此可以基于这个特性来判断写入操作是否成功
    $res = fwrite($fileObj,"Hello,World!");
    echo "写入到文件中 $res 个字符";

    fclose($fileObj);
?>

在上面的案例中,我们首先以写入模式打开一个文件,然后使用fwrite()函数将字符串"Hello,World!"写入到文件中。最后,我们使用close()函数关闭文件

1.1.4 修改文件

如果需要修改文件中的内容,我们可以先将文件内容读取到一个字符串中,然后对字符串进行修改,最后再将修改后的内容写入到文件中,下面是一个修改文件的示例:

php 复制代码
<?php
    header("Content-Type:text/html;charset=utf-8");
    //打开读取文件内容
    $file = fopen("a.txt","r");
    $content = fread($file,filesize("a.txt"));
    fclose($file);

    echo "1:读取文件完成...<br>";

    // 对内容进行字符串替换
    $content = str_replace("大力","张美丽",$content);
    echo "2:替换内容完成...<br>";

    // 将替换后的字符串再次写入到源文件中
    $file = fopen("a.txt","w")
    fwrite($file,$content);
    fclose($file);
    echo "3:重新写入完成...<br>";
?>

在上面的示例中,我们先将文件内容读取到$content变量中,然后使用str_replace()函数将字符串"大力"替换为"张美丽"。最后,我们将修改后的内容写入文件中。

1.1.5 删除文件

要删除一个文件,可以使用PHP的unlink()函数,以下是一个简单的示例代码:

php 复制代码
if(unlink("example.txt")) {
    echo "文件已删除";
}
else
{
    echo "无法删除文件";
}

在上述代码中,我们使用unlink()函数删除了名为example.txt的文件。如果删除成功,则该函数返回true,否则返回fales。

1.1.6 关闭文件

fclose() 函数用于关闭打开的文件:

php 复制代码
<?pphp
    $file = fopen("text.txt","r");
    
    //执行一些代码
    
    fclose($file);
?>
1.1.7 判断文件是否存在

file_exists()函数用于判断文件是否存在

php 复制代码
$file = "check.txt";
if(file_exists($file))
{
    echo "当前目录中,文件".$file."存在";
}
else
{
    echo "当前目录中,文件".$file."不存在";
}
1.1.8 判断目录是否存在

is_dir() 函数用于判断目录是否存在

php 复制代码
$dir = "c:/dir1";
if(is_dir($dir))
{
    echo "当前目录下,目录".$dir."存在";
}
else
{
    echo "当前目录下,目录".$dir."不存在";
}

1.2 操作文件的函数

1.2.1 fopen() 函数

fopen() 函数用于在PHP中打开文件,它可以用来读取文件的内容,也可以用来写入文件的内容。下面是一个示例:

php 复制代码
$file = 'test.txt';
$fp = fopen($file,'r');
while (!feof($fp)){
    $content = fgets($fp);
}
fclose($fp);
echo $content;
1.2.2 file_get_contents() 函数

file_get_content()函数用于将整个文件读入到一个字符串中,它是最简单也是最常用的读取文件内容的方法,使用起来也非常方便。下面是一个示例:

php 复制代码
$file = "test.txt";
$content = file_get_contents($fiel);
echo $content;
1.2.3 readfile() 函数

readfile()函数用于将文件的内容读取到输出缓冲中,它可以用来输出文本文件、图片文件等。下面是一个示例:

php 复制代码
$file = 'test.txt';
readfile($file);
1.2.4 file() 函数

file()函数用于读取文件的内容,将文件内容读取到一个数组中,每一行为数组中的一个元素。下面是一个示例:

php 复制代码
$fiel = 'test.txt';
$content = file($file);
foreach($content as $line){
    echo $line;
}
相关推荐
秃头佛爷2 分钟前
Python学习大纲总结及注意事项
开发语言·python·学习
待磨的钝刨3 分钟前
【格式化查看JSON文件】coco的json文件内容都在一行如何按照json格式查看
开发语言·javascript·json
XiaoLeisj2 小时前
【JavaEE初阶 — 多线程】单例模式 & 指令重排序问题
java·开发语言·java-ee
励志成为嵌入式工程师3 小时前
c语言简单编程练习9
c语言·开发语言·算法·vim
捕鲸叉3 小时前
创建线程时传递参数给线程
开发语言·c++·算法
A charmer4 小时前
【C++】vector 类深度解析:探索动态数组的奥秘
开发语言·c++·算法
Peter_chq4 小时前
【操作系统】基于环形队列的生产消费模型
linux·c语言·开发语言·c++·后端
记录成长java5 小时前
ServletContext,Cookie,HttpSession的使用
java·开发语言·servlet
前端青山5 小时前
Node.js-增强 API 安全性和性能优化
开发语言·前端·javascript·性能优化·前端框架·node.js
睡觉谁叫~~~5 小时前
一文解秘Rust如何与Java互操作
java·开发语言·后端·rust