• 【PHP】文件操作


    打开文件

    首先是打开文件的函数,我们将使用fopen()

    fopen(
        string $filename,
        string $mode,
        bool $use_include_path = false,
        resource $context = ?
    ): resource
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    首先第一个参数$filename是文件的路径, 同时也可以是一个url,如果是url,PHP将检查并确认 allow_url_fopen已被激活。如果关闭了,PHP 将发出一个警告,而 fopen 的调用则失败。

    fopen的第二个参数是模式,这里只介绍几种常用的,如果不清楚,请查手册

    mode说明
    ‘r’只读方式打开,将文件指针指向文件头
    ’r+‘读写方式打开,将文件指针指向文件头
    ‘w’写入方式打开,将文件指针指向文件头,并将文件大小截为零。如果文件不存在则尝试创建之
    ‘a+’读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。追加效果

    fopen返回的是一个资源类型,资源类型就像当于是一个权限

    下面是具体的例子:当使用w模式,最终会将文件的内容给清空

    
    fopen("./modew.txt", 'w');
    ?>
    
    • 1
    • 2
    • 3

    注意

    如果文件路径不存在的话,那么将可能会创建一个新的文件,如果您试图运行这段代码时发生错误,请检查您是否有向硬盘写入信息的 PHP 文件访问权限

    关闭文件

    fclose(resource $handle): bool
    
    • 1

    用完文件后把它们全部关闭是一个良好的编程习惯。您并不想打开的文件占用您的服务器资源

    文件指针必须有效,并且是通过fopen()fsockopen()成功打开的, 成功时返回 true, 或者在失败时返回 false。

    写入内容

    记住写入内容时候,权限一定要是可以写的模式

    fwrite(resource $handle, string $string, int $length = ?): int
    
    • 1

    $handle:文件系统指针,是典型地由 fopen()创建的resource(资源)。
    $string:向文件中写入的东西

    
    $fh = fopen("./modew.txt", 'w');
    echo fwrite($fh,  "hello, xx") ? "写入成功":"写入失败";
    fclose($fh);
    ?>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    内容覆盖

    写入的内容还可能会覆盖,比如r+模式和w+, 这是因为文件指针会指向同一个地方

    当我第一次执行下面的代码的时候

    
    $myfile = fopen("newfile.txt", "w");
    $txt = "Bill Gates\n";
    fwrite($myfile, $txt);
    $txt = "Steve Jobs\n";
    fwrite($myfile, $txt);
    fclose($myfile);
    ?>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    此时的$myfile内容是这样的

    Bill Gates
    Steve Jobs
    
    • 1
    • 2

    现在指向下面这段代码

    
    $myfile = fopen("newfile.txt", "w");
    $txt = "Mickey Mouse\n";
    fwrite($myfile, $txt);
    $txt = "Minnie Mouse\n";
    fwrite($myfile, $txt);
    fclose($myfile);
    ?>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    Mickey Mouse
    Minnie Mouse
    
    • 1
    • 2

    读取一行

    上面我们讲了打开文件, 关闭文件, 写入内容, 现在我们来将读取文件中的内容

    fgets(resource $handle, int $length = ?): string
    
    • 1

    从文件指针中读取一行

    
    $fh = fopen("./modew.txt", 'r+');
    echo fgets($fh);
    fclose($fh);
    ?>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    碰到换行符(包括在返回值中)、EOF 或者已经读取了 length - 1 字节后停止(看先碰到那一种情况)。如果没有指定 length,则默认为 1K,或者说 1024 字节。

    注意各个操作系统之下的换行符号是不同的

    win: \r\n
    *nix: \n
    mac: \r

    同时如果你想读整个文件, 那么可以使用一个循环,判断指针是否指向文件末尾。

    判断文件是否指向末位的函数可以使用feof这个函数。

    
    $fh = fopen("./modew.txt", 'rb');
    while (!feof($fh)) {
        echo fgets($fh), '
    '
    ; } fclose($fh); ?>
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    下面将介绍,下面一个函数这个函数叫做file函数

    file(string $filename, int $flags = 0, ?resource $context = null): array|false
    
    • 1

    这个函数将读取文件, 并将文件的没一行转化为一个数组,然后分别读出来

    
    $arr = file("./modew.txt");
    print_r($arr);
    ?>
    
    • 1
    • 2
    • 3
    • 4

    当我们想知道文件是什们时候修改的,我们将使用filemtime(文件名)函数

    
    $file = "./modew.txt";
    echo date("Y-m-d H:i:s", filemtime($file));
    ?>
    
    • 1
    • 2
    • 3
    • 4
  • 相关阅读:
    FL Studio 20.9水果编曲软件中文汉化补丁包
    奇数数列求和
    现货白银图表分析的依据
    【前端】vue的基础知识及开发指引
    Matlab图像处理-区域特征
    每日面试题和算法
    个人简历补充
    通俗易懂的React事件系统工作原理
    英语单词(6)
    台球厅 计时计费系统怎么弄教程,佳易王桌球计时计费系统灯控设置教程
  • 原文地址:https://blog.csdn.net/user_2022_5_1/article/details/126387640