文件操作进阶(读写文件、遍历目录、统计目录大小)

≯℡__Kan透↙ 提交于 2020-01-15 03:51:39

文件指针

若要使用文件指针方式进行操作,需要先打开文件,创建文件指针,然后使用指针进行读写,最后操作完成后关闭文件。

1、打开文件

fopen($filename, $mode)

$filename表示打开的文件路径,不仅可以是本地文件,还可以是HTTP或FTP协议的URL地址;$mode表示文件打开的模式

2、关闭文件

fclose($handle)

$handle表示fopen函数成功打开文件时返回的文件指针。如果文件关闭成功返回true,失败返回false

3、读取文件

fread($handle, $length)

用于读取指定长度的字符串。$length用于指定读取的字节数。该函数在读取到$length指定的字节数,或读取到文件末尾时就会停止读取,返回读取到的内容。当读取失败时返回false
当使用fread函数读取文件时,会影响文件指针指向文件的位置。通过ftell函数可以返回当前文件指针的位置,通过rewind()函数可以倒回文件指针的位置

fgetc($handle)

用于在打开的文件中读取一个字符,该函数每次只能读取一个字节,如果遇到EOF时,返回false

fgets($handle[,$length])

用于读取文件中的一行。$length用于指定读取的字节数,该函数从文件中读取一行,并返回长度最多为$length-1字节的字符串。在碰到换行符、EOF或已经读取了$length-1字节后停止。如果没有指定$length,则默认为1024字节
4、写入文件

fwrite($handle, $string[,$length])

$handle表示文件指针,$string表示要写入的字符串,$length表示指定写入的字节数,如果省略,表示写入整个字符串,fwrite函数会从文件指针的位置开始写入内容

目录句柄

对目录的操作可以通过目录句柄来完成。
1、opendir($path)
用于打开一个目录句柄。如果执行成功返回资源类型的目录句柄,失败返回false
2、closedir($handle)
$handle目录的句柄,用于关闭目录句柄,无返回值
3、readdir($handle)
用于从目录句柄中读取条目。函数执行成功返回下一个文件的文件名,失败时返回false
4、rewinddir($handle)
函数执行后将$handle重置到目录的开头,没有返回值

目录遍历

$handle = opendir('C:/java');
while (FALSE !== ($file = readdir($handle))) {
	echo $file."<br />";
}
closedir($handle);

注:在遍历任何一个目录的时候,都会包括点和点点两个特殊目录,前者表示当前目录,后者表示上一级目录

统计目录中所用文件的大小

function totalFiles($path) {//$path表示目录的路径
	$size = 0;
	$handle = opendir($path);
	while (FALSE !== ($file = readdir($handle))) {
	        //用于排除遍历目录时的特殊目录
		if ($file != '.' && $file != '..') {
			//用于拼接指定目录下的子目录或文件目录
			$file = "$path/$file";
			//用于判断路径是否为目录,如果是目录则继续递归,否则获取文件大小
			$size += is_dir($file) ? totalFiles($file) : filesize($file);
		}
	}
	closedir($handle);
	return $size;
}

echo "当前目录大小:" . totalFiles('./') . "字节";
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!