1、打开文件fopen()
1)描述:打开文件或者 URL
2)语法:resource fopen ( string $filename , string $mode )
3)参数:$filename
指定要打开的目标文件或URL;$mode
指定文件的打开方式。
4)提示:为移植性考虑,在用 fopen()打开文件时总是使用 'b' 标记。
5)返回值:成功时返回文件指针资源,如果打开失败,本函数返回 FALSE。
2、打开文件的方式
图片.png
3、关闭文件fclose()
1)描述:关闭一个已打开的文件指针
2)语法:bool fclose ( resource $handle )
3)参数:$handle
必须是由fopen()
打开的文件指针。
4、读取指定大小文件内容fread()
1)描述:读取文件(可安全用于二进制文件)
2)语法:string fread ( resource $handle , int $length )
3)参数:$handle
是由fopen()
创建的handle
;$length
最多读取的字节数。
4)提示:在区分二进制文件和文本文件的系统上(如 Windows)打开文件时,fopen() 函数的 mode 参数要加上'b'。
5)返回值:返回所读取的字符串, 或者在失败时返回 FALSE。
示例代码:
//声明文件类型为image/jpeg(MIME)
header('content-type:image/jpeg');
$filename='./abc.jpg';
//以只读方式打开
$handle=fopen($filename,'rb');
//读取文件内容
$str1=fread($handle,filesize($filename));
//输出图像
echo $str1;
![](https://img.haomeiwen.com/i12275941/085ce977b86dc7be.png)
5、读取一行内容fgets()
1)描述:从文件指针中读取一行
2)语法:string fgets ( resource $handle [, int $length ] )
3)参数:
a、$handle
:文件指针必须是有效的
b、$length
:从 handle指向的文件中读取一行并返回长度最多为 length - 1 字节的字符串。碰到换行符(包括在返回值中)、EOF 或者已经读取了 length - 1 字节后停止(看先碰到那一种情况)。如果没有指定 length,则默认为 1K,或者说 1024 字节。
4)返回值:从指针 handle 指向的文件中读取了 length - 1 字节后返回字符串。 如果文件指针中没有更多的数据了则返回 FALSE。
示例代码:
$filename='./mark/bin.txt';
//返回文件指针资源
$handle=fopen($filename,'rb');
//读取文件一行内容
$str1=fgets($handle);
echo iconv('gbk','utf-8',$str1).'<br>';
// //读取文件全部内容
// $str2=fread($handle,filesize($filename));
// echo iconv('gbk','utf-8',$str2);
// 关闭一个已打开的文件指针
fclose($handle);
![](https://img.haomeiwen.com/i12275941/106aef56cd2ed058.png)
![](https://img.haomeiwen.com/i12275941/0ea93e2d7d8299ed.png)
![](https://img.haomeiwen.com/i12275941/36855febfe949c57.png)
6、读取文件内容到数组中file()
1)描述:把整个文件读入一个数组中
2)语法:array file ( string $filename [, int $flags = 0 ] )
3)参数:
a、$filename
文件的路径;
b、$flags
附加选项;
c、FILE_USE_INCLUDE_PATH(1):在include_path 中查找文件;
d、FILE_IGNORE_NEW_LINES(2):在数组的每个元素末尾不添加换行符;
e、FILE_SKIP_EMPTY_LINES(4):跳过空行。
4)注意:不需要打开文件和关闭文件。
![](https://img.haomeiwen.com/i12275941/0757f9fcb50b2bd5.png)
7、读取文件内容到字符串中file_get_contents()
1)描述:将整个文件读入一个字符串,不需要打开文件和关闭文件。
2)语法:string file_get_contents ( string $filename )
3)返回:返回读取的数据,或在失败时返回false。
![](https://img.haomeiwen.com/i12275941/0175280b801f3e47.png)
![](https://img.haomeiwen.com/i12275941/d0f23605148b1bc3.png)
8、写入文件
1)描述:写入文件(可安全用于二进制文件)
2)语法:int fwrite ( resource $handle , string $string )
3)返回:返回写入的字符数,出现错误时则返回 FALSE 。
![](https://img.haomeiwen.com/i12275941/1fa2525d22d9c1d9.png)
9、将一个字符串写入文件
1)描述:和依次调用 fopen(),fwrite()以及 fclose() 功能一样。
2)语法:int file_put_contents ( string $filename , mixed $data [, int $flags = 0] )
3)参数:
a、$filename
要被写入数据的文件名。
b、$data
要写入的数据。类型可以是 string,array(一维数组)。
c、$flags
附加选项。
d、FILE_USE_INCLUDE_PATH(1) 在 include 目录里搜索 filename
e、FILE_APPEND(8)如果文件 filename已经存在,追加数据而不是覆盖。
f、LOCK_EX(2)在写入时获得一个独占锁。
4)提示:如果文件不存在,则会自动创建。如果文件过大,不能一次性处理。
5)返回:该函数将返回写入到文件内数据的字节数,失败时返回FALSE。
![](https://img.haomeiwen.com/i12275941/ee026b0fc2b76248.png)
10、拷贝文件
1)描述:将文件从 source 拷贝到 dest。
2)语法:bool copy ( string $source , string $dest )
3)提示:如果目标文件存在,则会覆盖。
![](https://img.haomeiwen.com/i12275941/99111fab4b0e59f2.png)
11、删除文件
1)语法:bool unlink ( string $filename )
2)返回:成功时返回 TRUE, 或者在失败时返回 FALSE。
3)提示:可以删除虚拟空间之外的文件,但必须使用相对路径(../),但必须有权限。
4)注意:删除的文件不会进入回收站。
![](https://img.haomeiwen.com/i12275941/a850c1c05b0da108.png)
12、header函数相关
网页跳转:header(“location:index.html”)
网页刷新:header(“refresh:3; url=index.html”)
网页字符集:header(“content-type:text/html;charset=utf-8”)
声明内容为图片:header(“content-type:image/png”)
附件处理方式:header(“content-disposition:attachment;filename=filename”)
声明文件内容类型为八位字节流:header(“content-type:application/octet-stream”)
13、其它的文件操作函数
1)filesize(),可以获取文件大小,单位为字节。
2)is_writable(),判断文件是否可写。
3)is_readable(),判断文件是否可读。
4)feof(),判断文件指针是否到达文件结尾。
5)filectime(),获取创建文件的时间。
6)fileatime(),获取文件最新访问时间。
7)filemtime(),获取文件最后修改时间。
示例代码:
$filename='./mark/bin.txt';
echo "bin.txt文件大小:".filesize($filename)."字节<br>";
echo "bin.txt文件可写性:".is_writable($filename)."<br>";
echo "bin.txt文件可读性:".is_readable($filename)."<br>";
echo "bin.txt文件创建时间:".
date('Y-m-d h:i:s',filectime($filename))."<br>";
echo "bin.txt文件最新访问时间:".
date('Y-m-d h:i:s',fileatime($filename))."<br>";
echo "bin.txt文件最后修改时间:".
date('Y-m-d h:i:s',filemtime($filename))."<br>";
$handle=fopen($filename,'rb');
//通过判断文件指针是否到达结尾,来循环读取文件的所有行内容
while(!feof($handle)){
echo fgets($handle)."<br>";
}
结果如下:
![](https://img.haomeiwen.com/i12275941/66114b725c730706.png)
网友评论