文件及目录相关处理问题
一、文件的读写操作
打开文件
fopen
打开文件或者 URL
resource fopen ( string $filename , string $mode [, bool $use_include_path = false [, resource $context ]] )
fopen中mode的几种参数介绍:
'r':只读方式打开,将文件指针指向文件头。
'r+':读写方式打开,将文件指针指向文件头。
'w':写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
写入函数
1. fwrite
写入文件(可安全用于二进制文件)
int fwrite ( resource $handle , string $string [, int $length ] )
fwrite() 把 string 的内容写入 文件指针 handle 处。
fwrite() 返回写入的字符数,出现错误时则返回 FALSE 。
2.fputs
fputs — fwrite的别名
读取函数
1.fread
读取文件(可安全用于二进制文件)
string fread ( resource $handle , int $length )
返回所读取的字符串, 或者在失败时返回 FALSE。
fread() 从文件指针 handle 读取最多 length 个字节。 该函数在遇上以下几种情况时停止读取文件:
- 读取了 length 个字节
- 到达了文件末尾(EOF)
2.fgets
从文件指针中读取一行
string fgets ( resource $handle [, int $length ] )
参数 length:
从 handle 指向的文件中读取一行并返回长度最多为 length - 1 字节的字符串。碰到换行符(包括在返回值中)、EOF 或者已经读取了 length - 1 字节后停止(看先碰到那一种情况)。如果没有指定 length,则默认为 1K,或者说 1024 字节。
3.fgetc:
从文件指针中读取字符
关闭文件
fclose
不需要fopen打开的函数
file_get_content
file_put_content
其他读取函数
file
把整个文件读入一个数组中
readfile
输出文件,读取文件并写入到输出缓冲。
访问远程文件
屏幕快照 2017-09-03 下午1.22.58.png二、目录相关操作
名称相关
basename
返回路径中的文件名部分
dirname
返回路径中的目录部分
pathinfo
返回文件路径的信息
<?php
$path_parts = pathinfo('/www/htdocs/inc/lib.inc.php');
echo $path_parts['dirname'], "\n";
echo $path_parts['basename'], "\n";
echo $path_parts['extension'], "\n";
echo $path_parts['filename'], "\n"; // since PHP 5.2.0
?>
输出
/www/htdocs/inc
lib.inc.php
php
lib.inc
目录读取
opendir
打开目录句柄
resource opendir ( string $path [, resource $context ] )
打开一个目录句柄,可用于之后的 closedir(),readdir() 和 rewinddir() 调用中。
closedir
关闭目录句柄
readdir
readdir — 从目录句柄中读取条目
rewinddir
倒回目录句柄
目录读取
rmdir
前提是该目录为空,没有文件或者其他目录
文件大小
filesize
文件拷贝
copy
bool copy ( string $source , string $dest [, resource $context ] )
文件移动
rename
bool rename ( string $oldname , string $newname [, resource $context ] )
文件删除
unlink
bool unlink ( string $filename [, resource $context ] )
文件类型
filetype
文件或者目录
文件锁
flock
示例
1、在文件的开头写入helloworld 执行一次,写入一次,不得覆盖后面的内容
<?php
// 打开文件
//
// 将文件的内容读取出来,在开头加入Hello World
//
// 将拼接好的字符串写回到文件当中
//
// Hello 7891234567890
//
$file = './hello.txt';
$handle = fopen($file, 'r');
$content = fread($handle, filesize($file));
$content = 'Hello World'. $content;
fclose($handle);
$handle = fopen($file, 'w');
fwrite($handle, $content);
fclose($handle);
2、遍历目录
<?php
$dir = "./dirtest";
function loopDir($dir){
$handle = opendir($dir);
while(false !== ($file=readdir($handle)) ){
if($file != '.' && $file != '..' && $file != '.DS_Store'){
echo $file ."\n";
if(filetype($dir.'/'.$file) == 'dir'){
loopDir($dir. '/'. $file);
}
}
}
closedir($handle);
}
loopdir($dir);