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

文件指针

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

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('./') . "字节";
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无知的小菜鸡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值