文章目录
在系统的每个目录下,都有两个特殊的目录 ‘.’ 和’…’,分别表示当前目录和上一级目录。在UNIX和Windows系统中,都建议使用 ‘/’ 作为文件的路径分隔符;PHP中还可以使用DIRECTORY_SEPARATOR 来获得系统默认的文件分隔符。
##目录相关函数
- basename() 返回路径中的文件名
$path = '/demo_dir/demo_dir2/hello.txt';
// 输出 hello.txt
echo basename($path);
- dirname() 返回文件名的路径
$path = '/demo_dir/demo_dir2/hello.txt';
// 输出 /demo_dir/demo_dir2
echo dirname($path);
- pathinfo() 返回目录名、文件名、和扩展名的关联数组
$path = '/demo_dir/demo_dir2/hello.txt';
var_dump(pathinfo($path));
输出的结果:
array(4) {
["dirname"]=>
string(19) "/demo_dir/demo_dir2"
["basename"]=>
string(9) "hello.txt"
["extension"]=>
string(3) "txt"
["filename"]=>
string(5) "hello"
}
-
opendir() 打开指定目录,返回目录句柄。一般先返回 ‘.’ 和 ‘…’ 两个特殊的目录
-
readdir($dir_handle = null) 返回目录下的第一个文件名,并将指针向移动一位
-
closedir($dir_handle = null) 关闭指定目录
-
rewinddir($dir_handle = null) 将目录的指针重置到目录的开头
-
rmdir($dirname) 删除目录
-
mkdir ($pathname) 创建目录
-
unlink 删除文件
-rename 重命名文件或者目录
##文件及磁盘大小
- filesize() 计算文件的大小
- disk_free_space() 磁盘剩余空间大小
- disk_total_space() 磁盘总大小
##文件读写操作
- fopen(filename,mode,include_path,context) 打开文件或者url,其中path可以是绝对路径,也可以是相对路径,我们一般使用绝对路径
- fwrite() 写入,等同于 fputs
- fgets() 读取一行
- fgetc() 读取一个字符
- fread() 读取指定的长度
看一个简单的例子
$contents = 'fread_';
$base_path = '/usr/share/nginx/html/phpstaff/public';
// 这里的路径一般指绝对路径
$filename = $base_path . '/demo_dir/demo_dir2/hellol.txt';
$handle = fopen($filename, 'r') or die('没有找到该文件');
while (!feof($handle)) {
$contents .= fread($handle, 1024);
}
var_dump($contents);
fclose($handle);
以上函数必须借助 fopen 函数返回的句柄,若不想使用fopen函数,可以使用下面的函数
(1)file() 将文件内容一行一行地读入索引数组
(2)file_get_contents($filename, $use_include_path = false, $context = null, $offset = 0, $maxlen = null) 获取文件内容
(3)file_put_contents($filename, $data, $flags = 0, $context = null) 写入文件内容
##文件锁
flock(handle,operation)
第二个参数也是必须的,规定使用哪种锁类型。
- LOCK_SH 读锁
- LOCK_EX 写锁
- LOCK_UN 释放锁定
- LOCK_NB 附加锁定,如果不希望在加写锁是出现堵塞
描述难理解,看例子
flock($handle,LOCK_SH);
flock($handle,LOCK_EX+LOCK_NB);
flock($handle,LOCK_UN+LOCK_NB);