本文内容
1.文件的写入写出
2.文件判断与删除
3.读取二进制文件
代码和说明
<?php
/**
* @Description:文件编程
* 0x01文件的写入写出
* 文件的写入:file_put_contents( string $filename, mixed $data[, int $flags = 0[, resource $context]] ) : int
* file_get_contents( string $filename[, bool $use_include_path = false[, resource $context[, int $offset = -1[, int $maxlen]]]] ) : string
* 说明:
* 1.file_put_contents(string $filename)和依次调用 fopen(),fwrite() 以及 fclose() 功能一样。
* 2.file_get_contents() 函数是用来将文件的内容读入到一个字符串中的首选方法。如果操作系统支持还会使用内存映射技术来增强性能。
* 3.file_get_contents() 既可以读字符,也可以用来读取二进制
* 4.每次写入文件都会清空文件内容重写,相当于mode:w
* 5.\r是回车,将光标移到行首。\n是换行,使光标下移行
* 6.对于换行每个操作系统都不太一样。windows采用:回车+换行CR/LF表示下一行,即\r\n。linux和unix采用:LF,即\n。macOS采用CR,即\r
* 7.如果文件不存在,file_put_contents会创建一个新文件。file_get_contents会报warning类型的错误
*
*0x02 打开、操作文件
* fopen( string $filename, string $mode[, bool $use_include_path = false[, resource $context]] ) : resource
* fgets( resource $handle[, int $length] ) : string
* fputs = fwrite( resource $handle, string $string[, int $length] ) : int
* fclose( resource $handle) : bool
* 说明:1.fopen 打开一个文件,返回一个文件指针。常用的mode:r:读,read;w:写 write;a:追加 append;
* 2.fgets — 从文件指针中读取一行
* 3.fputs是fwrite的别名。fwrite() 把 string 的内容写入文件指针 handle 处。
* 4.fclose-将 handle 指向的文件关闭。
* 5.进行写和追加时,如果文件不存在,会创建一个新文件,然后再进行下一步操作
* 6.如果要读的文件不存在,会报warning类型的错误
*
* 0x03 文件判断与删除
* is_file( string $filename) : bool
* file_exists( string $filename) : bool
* unlink( string $filename[, resource $context] ) : bool
* 说明:1、is_file — 判断给定文件名是否为一个正常的文件
* 2、file_exists — 检查文件或目录是否存在
* 3、删除 filename。和 Unix C 的 unlink() 函数相似。发生错误时会产生一个 E_WARNING 级别的错误。
*
* 0x04 读取二进制文件
* fread( resource $handle, int $length) : string
* filesize( string $filename) : int
* 说明:1.filesize — 取得文件大小;返回文件大小的字节数,如果出错返回 FALSE 并生成一条 E_WARNING 级的错误。
* 2.fread — 读取文件(可安全用于二进制文件);返回所读取的字符串, 或者在失败时返回 FALSE。
* 3.fread() 从文件指针 handle 读取最多 length 个字节。该函数在遇上以下几种情况时停止读取文件:1.读取了 length 个字节;2.到达了文件末尾(EOF)
* 3.file_get_contents()也可以读取二进制文件
*
* @Author:baola
* @Time:2020-07-07 09:56
*/
// 1.将字符串写入文件,采用file_put_contents
$str = "春眠不觉晓,\r\n处处闻啼鸟。夜来风雨声,\r\n花落知多少。\r\n";
file_put_contents('./file01',$str);
// 2.文件内容写入字符串,方式一
echo file_get_contents('./file001'); //将文件写入字符串并输出
//方式二:相当于echo file_get_contents('./file01');
readfile('./file01');
// 3.fopen,fputs,fgets
$fp = fopen('./file01','a'); //在文件末尾追加文件内容
fputs($fp,'春天真美丽');
$fp = fopen('./file01','r');//打开文件返回文件指针(文件地址)
while($line = fgets($fp)){
echo $line,'<br>';
}
fclose($fp);
// 4.判断与删除文件
$path = './file01';
if(is_file($path)){
if(is_dir($path)){
rmdir($path);
}elseif(is_file($path)){
unlink($path);
}
}
// 5.二进制读取文件内容,方式一:使用fread
$path = './cat.jpg';
$fp = fopen($path,'r');
header('content-type:image/jpeg');
echo fread($fp,filesize($path));
fclose($fp);
// 5.方式二:使用file_get_contents()读取二进制数据
$path = './cat.jpg';
echo file_get_contents($path);