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;
}
相关推荐
isyangli_blog5 小时前
OpenDayLight (Carbon 版本) 启动与组件安装
开发语言·php
vb2008115 小时前
FastAPI APIRouter
开发语言·python
Benszen5 小时前
KVM虚拟化解决方案
开发语言·perl
会编程的土豆5 小时前
Go 语言反射(Reflection)详解
开发语言·后端·golang
東雪木5 小时前
多线程与并发编程 专属复习笔记
java·开发语言·笔记·java面试
杨充5 小时前
1.3 浮点型数据设计灵魂
开发语言·python·算法
噜噜噜阿鲁~5 小时前
python学习笔记 | 11.3、面向对象高级编程-多重继承
java·开发语言
basketball6166 小时前
Go 语言从入门到进阶:4. 数组和MAP使用方法总结
开发语言·后端·golang
春生野草6 小时前
反射、Tomcat执行
java·开发语言
雪的季节7 小时前
企业级 Qt 全功能项目
开发语言·数据库·qt