PHP学习 文件与目录操作
一、判断普通文件和目录
1.is_file()
判断给定文件名是否为一个正常的文件
语法:is_file(file) //规定要检查的文件。
如果文件是常规的文件,该函数返回 TRUE。
2.is_dir()
判断给定文件名是否是一个目录
语法: is_dir(file)
如果文件名存在并且为目录,则返回 true。如果 file 是一个相对路径,则按照当前工作目录检查其相对路径。
二、文件的属性
1.file_exists()
检查文件或目录是否存在
语法:file_exists(path) //path为规定要检查的路径。
如果指定的文件或目录存在则返回 true,否则返回 false。
2.filesize()
取得普通文件大小
语法: filesize(filename) //filename为规定要检查的文件。
若成功,则返回文件大小的字节数。若失败,则返回 false 并生成一条 E_WARNING 级的错误。
3.is_readable()
判断给定文件名是否可读
语法: is_readable(file)
如果由 file 指定的文件或目录存在并且可读,则返回 TRUE。
4.is_writable()
判断给定的文件名是否可写
语法: is_writable(file)
如果文件存在并且可写则返回 true。file 参数可以是一个允许进行是否可写检查的目录名。
5.filectime()
获取指定文件的上次访问时间。
语法: fileatime(filename)
该函数返回文件上次被访问的时间。如果出错则返回 false。时间以 Unix 时间戳的方式返回。
6.filemtime()
获取文件的修改时间
语法: filemtime(filename)
返回文件中的数据块上次被写入的时间,也就是说,文件的内容上次被修改的时间。
7.fileatime()
获取指定文件的上次 inode 修改时间。
语法: fileatime(filename)
返回文件上次 inode 被修改的时间。如果出错则返回 false。时间以 Unix 时间戳的方式返回。
fileatime、filemtime与filectime区别
<?php
$file = "1.txt";
outputFileTestInfo( $file );
function outputFileTestInfo( $f ){
if ( ! file_exists( $f ) ){
print "$f does not exist<BR>";
return;
}
print "$f was accessed on ".date( "D d M Y g:i A", fileatime( $f ) )."<br>";
print "$f was modified on ".date( "D d M Y g:i A", filemtime( $f ) )."<br>";
print "$f was changed on ".date( "D d M Y g:i A", filectime( $f ) )."<br>";
}
?>
/*
输出:
1.txt was accessed on Sun 13 Sep 2020 7:16 PM
1.txt was modified on Sun 13 Sep 2020 5:23 PM
1.txt was changed on Sun 13 Sep 2020 7:16 PM
*/
8.stat()
获取文件大部分属性值
三、目录的基本操作
1.basename()
返回路径中的文件名部分
语法:basename(path)或basename(path,文件拓展名)
例:
<?php
$path = "demo/test.php";
//Show filename with file extension
echo basename($path) ."<br/>"; //输出test.php
/Show filename without file extension
echo basename($path,".php"); //输出 test
?>
2.dirname()
返回路径中的目录部分
语法: dirname(path)
案例:
<?php
echo dirname("c:/testweb/home.php"); //输出c:/testweb
echo dirname("/testweb/home.php"); //输出testweb
?>
3.pathinfo()
以数组的形式返回文件路径的信息。
语法: pathinfo(path,options)
用法:
pathinfo() 返回一个关联数组包含有 path 的信息。包括以下的数组元素:[dirname]( 目录路径)、[basename] (文件名)、[extension]: (文件后缀名)、[filename] (不包含后缀的文件名)。
其中options为规定要返回的数组元素。默认是 all。
若出现PATHINFO_DIRNAME
, 则只返回 dirname
若出现PATHINFO_BASENAME
, 则只返回 basename
若出现PATHINFO_EXTENSION
,则只返回 extension
例:
<?php
print_r(pathinfo("index.html"));
?>
输出:
Array ( [dirname] => . [basename] => index.html [extension] => html [filename] => index )
4.opendir()
打开目录句柄
语法:opendir(path);
//path为规定要打开的目录路径。。
5.readdir()
从目录句柄中读取条目,返回目录中下一个文件的文件名
readdir(dir_handle);
//dir_handle指定之前由 opendir() 打开的目录句柄资源。如果该参数未指定,则使用最后一个由 opendir() 打开的链接。
6.rewinddir()
倒回目录句柄
语法:rewinddir(dir_handle);
//rewinddir() 函数重置由 opendir() 创建的目录句柄。
7.closedir()
关闭目录句柄
语法:closedir(dir_handle);
8.mkdir()
新建目录,如果成功该函数返回 true,如果失败则返回 false。
语法:mkdir(path,mode,recursive)
9.rmdir()
删除指定的空目录,如果成功该函数返回 true,如果失败则返回 false。
语法:rmdir(dir)
10.scandir()
返回指定目录中的文件和目录的数组。
语法:scandir(directory,sorting_order);
/*
directory为要扫描的目录。
sorting_order为排列顺序。默认是 0,表示按字母升序排列。
如果设置为 sorting_order_descending 或者 1,则表示按字母降序排列。
如果设置为 sorting_order_none,则返回未排列的结果。
*/
四、文件的基本操作
1.fopen():
打开文件或者 URL
fopen()函数的参数是目标文件的路径和文件的读写模式;同时fopen函数也会 在打开文件时候发现没有文件会自动创建一个文件,但是模式必须是读写或写入的模式
$file=fopen("D:/test/file.txt","r");//使用绝对路径打开一个文件,选择只读模式,并返回资源$file
$file=fopen("http://www.test.com","r");//打开远程文件,使用http协议只能以读的方式打开
2.fread()
:读取文件
fread($file,filesize("file.txt"));
fread()函数的参数是需要读取的文件和文件读取的最大字节数
3.fgets():
从文件指针中读取一行
fgets($file);
读取文件中的单行文字,没读取一次就会将文件指针指向下一行的首部
fgetc()
:读取单个字符
fgetc($file);
fgetc()函数将会逐个字符的读取内容输出;
4.feof()
:检查文件指针是否到了文件结束的位置
feof($file);
feof()函数的主要功能是检查文件中的指针是否到达文件末尾,可以借此来解决未知大小的文件读写防止越界的问题
5.fwrite()
:写入文件
fwrite(file,string,length)
fwrite() 返回写入的字符数,出现错误时则返回 false。
<?php
$file = fopen("test.txt","w");
echo fwrite($file,"Hello World");
fclose($file);
?>
//输出
11
6.rewind()
倒回文件指针的位置
7.flock()
轻便的咨询文件锁定
8.ftruncate()
将文件截断到给定的长度
9.fclose()
:关闭一个已打开的文件指针
fclose(file)
file 参数是一个文件指针,fclose() 函数关闭该指针指向的文件。如果成功则返回 true,否则返回 false。
10.file()
:把整个文件读入一个数组中
file(path)
file() 将文件作为一个数组返回。数组中的每个单元都是文件中相应的一行,包括换行符在内。如果失败,则返回 false。
<?php
print_r(file("test.txt"));
?>
//输出
Array ( [0] => Hello World [1] => abc [2] => fe [3] => vdf )
11.copy()
:拷贝文件
copy(source,destination)
//source 为要复制的文件,destination 为复制文件的目的地。
将文件从 source 拷贝到 destination。如果成功则返回 TRUE,否则返回 FALSE。
<?php
echo copy("a.txt","b.txt");
?>
12.unlink()
:删除文件
unlink(filename)
删除文件若成功,则返回 true,失败则返回 false。
<?php
$file = "test.txt";
if (!unlink($file))
{
echo ("Error deleting $file");
}
else
{
echo ("Deleted $file");
}
?>
13.file_get_contents()
:将整个文件读入一个字符串
file_get_contents(path)
14.file_put_contents()
:将字符串写入文件中
file_put_contents(file,data)
file_put_contents() 函数把一个字符串写入文件中。与依次调用 fopen(),fwrite() 以及 fclose() 功能一样。
<?php
echo file_put_contents("test.txt","Hello World!");
?>
15.rename()
:重命名一个文件或目录
rename(oldname,newname)
//oldname 要重命名的文件或目录。newname 文件或目录的新名称。
16.readfile()
;读入一个文件并写入到输出缓冲
readfile(filename)
该函数读入一个文件并写入到输出缓冲。若成功,则返回从文件中读入的字节数。若失败,则返回 false。
<?php
echo readfile("test.txt");
?>
//输出
Hello World!12