基本知识:

PHP文件系统是基于Unix系统的
文件数据基本类型:二进制数据、文本数据
文件输入流:数据从源文件到内存的流动
文件输出流:数据从内存保存到文件的流动

文件操作函数:

》》》读《《《

==>获取文件流
fopen(文件相对路径/绝对路径,[文件打开模式]);    成功返回文件流,否则返回false
    [文件打开模式]六种常用打开方式:

    r    只读方式打开    指针在文件头
    r+    读写方式打开    指针在文件头

    a    写入方式打开[追加]    指针在文件尾
    a+    读写方式打开[追加]    指针在文件尾

    w    写入方式打开[创建或清空]    指针在文件头
    w+    读写方式打开[创建或清空]    指针在文件头

    b     只限于windows,二进制模式,附加在其他模式的上,例如”xb”
    t     只限于windows,附加在其他模式上,,将所有行的结束符转换成\r\n

==>根据文件流获取文件信息
fstat(文件流);    返回文件信息
返回的数组部分信息:
[\’size\’]:文件大小
[\’atime\’]:最后访问时间   返回的是Unix时间戳 转换date(\’Y-m-d H:i:s\’,$fileStream[\’mtime\’]);
[\’mtime\’]:最后修改时间
[\’ctime\’]:最后改变时间(相当于创建时间,只要所有者或用户组没有变化)

==>关闭文件
fclose($fileStream);

==>根据路径获取文件信息(方法二):可以不用打开文件就可以获取文件信息
filesize($filePath);
fileatime($filePath);
filemtime($filePath);
filectime($filePath);

==>判断文件是否存在
file_exists($filePath);

==>读取文件内容(方法一)
$fileData = fread($fileStream,filesize($filePath));
注意:
文本文件读取到网页上显示时,由于换行符不被解释,文本不换行显示,
解决办法:将\r\n替换为<br/>[str_replace(\’\r\n\’,\'<br/>\’,$fileData);]

==>读取文件内容(方法二)
file_get_contents($filePath); 将整个文件读取到一个字符串(内部自动关闭文件流)

==>读取文件内容(方法三) 循环读取,用于读取大文件
循环读取指定字节大小的文件数据
feof($fileStream):判断文件指针是否在文件未尾,是返回true,否则返回false
while(!feof($fileStream)){
    $fileData = fread($fileStream,1024);
    echo $fileData;
}

应用扩展:
编写配置文本文件 db.ini
内容:
    host=172.0.0.1
    uid=root
    pwd=1314
    dbname=test
parse_ini_file(\’db.ini\’); 根据‘=’分隔后的一个数组

======================================

fopen(\’htttp://demo.php/\’,\’r\’);
可以读取远程文件,但只限于只读模式
成功返回文件流,否则返回false

fread($handle,$len);            读取文件的len个字符长度可
stream_get_contents($handle);     读取文件所有内容

fwrite(fileStream,rContent,[length])
Note: 在区分二进制文件和文本文件的系统上(如 Windows) 打开文件时,fopen() 函数的 mode 参数要加上 \’b\’。
成功返回写入的字符数,出现错误时则返回 FALSE 。

fclose(fileStream)

例:
$filename = “/usr/local/something.txt”;
$handle = fopen($filename, “rb”);
$contents = fread($handle, filesize ($filename));
fclose($handle);

 

ftruncate($hanle,$len); 截取文件内容

》》》写《《《

==>写入文件(方法一)
$fileStream = fopen(filePath,”a+”); 给文件末尾追加内容用a+
fwrite($fileStream,”要写入的内容”);  返回写入的字符数,出现错误时则返回 FALSE 。

==>写入文件(方法二)
file_put_contents($filePath,”要写入的内容”,FILE_APPEND);
内部会自动关闭文件流,FILE_APPEND以追加方式添加,如果没有则默认是对内容清空再写入
如果是循环写入,效率没有第一种高

》》》拷贝《《《
copy(源路径,结果路径);
注意:中文的编码转换 iconv(\’utf-8\’,\’gb2312\’,$filePath);

版权声明:本文为lt-style原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/lt-style/p/3511469.html