一. 目录操作

1 . 打开目录:opendir(string path);

2 . 关闭目录:closedir(dir_resource)。其中,dir_resource指使用opendir函数打开目录时返回的资源对象;

3 . 读取目录中的文件:readdir(dir_resource);

4 . 创建目录:mkdir(string dir_path);

5 . 删除目录:rmdir(string dir_path);

6 . 获取目录名:dirname(string dir_path);

7 . 检查指定的文件是否是目录:is_dir(string dir_path);

二. 文件操作

1. 打开文件

fopen(string filepath, string mode)

fopen()函数的文件模式:

模式 模式名称 说明
r 只读
r+ 只读 读写模式:从文件头开始读写
w 只写 从文件头开始读。如果该文件已经存在,将删除所有文件已有的内容;如果文件不存在,则创建这个文件
w+ 只写 从文件头开始读写。如果该文件已经存在,将删除所有文件已有的内容;如果文件不存在,则创建这个文件
x 谨慎写 写模式打开文件,从文件头开始写。如果文件已经存在,该文件将不会被打开,fopen()函数将返回false,而且PHP将产生一个警告
x+ 谨慎写 写模式打开文件,从文件头开始读写。如果文件已经存在,该文件将不会被打开,fopen()函数将返回false,而且PHP将产生一个警告
a 追加 如果该文件已有内容,将从文件末尾开始追加(写);如果该文件不存在,函数将创建这个文件
a+ 追加 如果该文件已有内容,将从文件末尾开始追加(写)或者读;如果该文件不存在,函数将创建这个文件
b 二进制 默认模式
t 文本 非推荐

如:

$file = fopen("/home/rasmus/file.txt", "r");

2. 关闭文件

fclose(file_resource);

3. 读取文件

(1) 读取文件中的一个字符:fgetc(file_resource)

(2) 读取文件中的一行:fgets(file_resource)

(3) 读取文件中的一行,并且可过滤掉字符串中包含PHP和HTML标记:fgetss(file_resource)

(4) 读取文件中任意长字符:fread(file_resource, int length)

(5) 返回文件大小的字节数:filesize(string filepath)

(6) 文件指向了文件末尾将返回true:feof(file_resource)

(7) 打开文件,并且将文件内容输出到标准输出(浏览器)中,然后再关闭这个文件:readfile(filePath, int use_include_path)

(8) 以字符串的形式返回文件内容,而不是将文件内容直接输出到浏览器中,也就是必须使用echo 输出:file_get_contents()

实例:

1. 读取相对较小文件

$filePath = 'test.html';
$fp = fopen($filePath, 'rb');
$file_contents = fread($fp, filesize($filePath));
fclose($fp);
echo $file_contents;

2. 读取相对较大文件

//以块读取文件,并以块进行操作
$filePath = 'test.html';
$fp = fopen($filePath, 'rb');
while (!feof($fp)) {
    $chunk = fgets($fp);
    echo $chunk;
}
fclose($fp);

4. 写入文件

(1) fwrite(file_resource, string str[, int length]);第三个参数是可选的,表明写入文件的最大长度。可以通过内置strlen()函数获得字符串的长度,如下:fwrite($fp,$outputinfo,strlen($outputinfo));

(2) fputs():等同于fwrite();

(3) file_put_contents(string filepath, string data[, int flags][, resource context]):可以在不需要调用fopen()(或fclose())函数打开要学的文件,将包含在data中的字符串数据写入filename所指定的文件中;

5. 删除文件

unlink(string filepath)

6. 复制文件

copy(string filename_resource, string filename_copy)

7. 文件上传操作

将上传的文件移动到新位置:move_uploaded_file(string filename_client, string filename_server);第一个参数是要移动的文件,第二个参数是上传文件的新位置。

全局变量 $_FILES 自 PHP 4.1.0 起存在(在更早的版本中用 $HTTP_POST_FILES 替代)。此数组包含有所有上传的文件信息:

  • $_FILES["userfile"]["name"]:客户端源文件名;
  • $_FILES["userfile"]["type"]:上传文件的类型;
  • $_FILES["userfile"]["size"]:上传文件的字节数;
  • $_FILES["userfile"]["tmp_name"]:文件上传后在服务器上的临时存储文件名;
  • $_FILES["userfile"]["error"]:返回由文件上传中有可能出现的错误的状态码;

备注:上传文件的form表单需要添加enctype="multipart/form-data"属性。

实例如下:

<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="myFile" />
</form>

upload.php:

// 上传文件的路径
$uploaddir  =  "/uploads/";
// 上传文件的文件名
$uploadfile  =  $uploaddir.basename($_FILES["myFile"]["name"]);
// 检查文件是否上传成功;如果成功,则将上传文件的文件名作为临时文件名
if (move_uploaded_file($_FILES["myFile"]["tmp_name"], $uploadfile)) {
    echo  "File is successfully uploaded.\n" ;
} else {
    echo  "File can't be uploaded!\n" ;
}
// 打印上传文件信息
 print_r ($_FILES);

9. 文件属性操作

(1) 检查文件是否存在:bool file_exits()

(2) 文件是否可读:bool is_readable(string filepath)

(3) 文件是否可写:bool is_writable(string filepath)

(4) 检测目标对象是文件还是目录:is_file(string filepath)

(5) 检测文件是否可执行:is_executable(string filepath)

(6) 检测文件是否是通过HTTP POST 上传的:is_uploaded_file(string filepath)

(7) 获取文件大小:filesize(string filepath)

(8) 获取文件名:basename(string filepath[, suffix])。第二个参数可选,规定文件扩展名,如果文件有 suffix,则不会输出这个扩展名;

$path = "1.html";
//显示带有文件扩展名的文件名
echo basename($path);
//显示不带有文件扩展名的文件名
echo basename($path,".php");

(9) 获取文件或目录的类型:filetype()。若失败,则返回 false;若成功,则返回 7 种可能的值。可能的值:fifo、char、dir、block、link、file、unknown;

10. 重命名文件或目录

rename(oldname, newname[, context]);

11. 新建临时文件

(1) tmpfile():以读写(w+)模式建立一个具有唯一文件名的临时文件。文件会在关闭后(用 fclose())自动被删除。

(2) tempnam(string dir_path, prefix):建一个具有唯一文件名的临时文件。若成功,则该函数返回新的临时文件名;若失败,则返回 false。第一个参数是临时文件的目录路径,第二个参数是文件名的开头。此文件创建后不会被自动删除。

12. 文件权限配置

(1) 改变文件模式:chmod(string filepath[, int mode]);

第二个参数可选,规定文件的新权限。mode 参数由 4 个数字组成:

  • 第一个数字永远是 0;
  • 第二个数字规定所有者的权限;
  • 第二个数字规定所有者所属的用户组的权限;
  • 第四个数字规定其他所有人的权限;

可能的值(如需设置多个权限,请对下面的数字进行总计):

  • 1 – 执行权限;
  • 2 – 写权限;
  • 4 – 读权限;

13. 访问与修改时间

(1) 最后访问时间:fileatime()

(2) 最后改变时间(任何数据的修改):filectime()

(3) 最后修改时间(指仅是内容修改):filemtime()

14. 文档根目录

$_SERVER["DOCUMENT_ROOT"],获得站点的相对路径;

$root = $_SERVER["DOCUMENT_ROOT"];

15. 文件锁定

flock()

本文作者:子匠_Zijor,转载请注明出处:http://www.dengzhr.com/others/backend/552