php函数:文件和目录的操作,如何创建、读取或写入文件和目录
在PHP中,文件和目录操作是一种非常常见的操作,可以用于存储或读取数据,创建新的文件或目录,以及管理文件和目录的权限。本文将介绍几个常用的文件和目录操作函数,并且示例演示如何使用这些函数。
一、文件操作函数
1. fopen():打开文件
语法:fopen(string $filename, string $mode, bool $use_include_path=false, resource $context=null) : resource
$fopen()函数用于打开一个文件,并返回指向该文件的资源句柄,以便进一步的读取或写入操作。$filename指定要打开的文件的名称,$mode指定在打开文件时使用的模式,可以是“r”(只读),“w”(只写,如果文件不存在则创建),“a”(追加),“x”(创建并写入新文件)等。$use_include_path为是否考虑“include path”以找到文件,$context用于指定请求流的上下文,如超时、cookie等信息。
例子:
$myfile = fopen("example.txt", "w") or die("无法打开文件!");
$txt = "Hello World!";
fwrite($myfile, $txt);
fclose($myfile);
上面这个例子中,我们创建一个名为“example.txt”的文件,并在该文件中写入文本“Hello World!”。
2. fwrite():写入文件
语法:fwrite(resource $handle, string $string, int length=null) : int
$fwrite()函数用于将字符串写入打开的文件句柄中。$handle为指向文件的资源句柄,$string为要写入的字符串,$length为要写入的字节数,如果没有指定,则写入整个字符串。
例子:
$myfile = fopen("example.txt", "w") or die("无法打开文件!");
$txt = "Hello World!";
fwrite($myfile, $txt);
fclose($myfile);
上面这个例子中,我们创建一个名为“example.txt”的文件,并在该文件中写入文本“Hello World!”。
3. fread():读取文件
语法:fread(resource $handle, int $length) : string
$fread()函数用于从打开的文件句柄中读取字符串。$handle为指向文件的资源句柄,$length指定要读取的最大字节数,返回读取到的内容字符串。
例子:
$myfile = fopen("example.txt", "r") or die("无法打开文件!");
echo fread($myfile,filesize("example.txt"));
fclose($myfile);
上面这个例子中,我们读取名为“example.txt”的文件中的内容,并将其输出到屏幕上。
4. fgets():读取文件的一行
语法:fgets(resource $handle, int $length=null) : string
$fgets()函数用于从打开的文件句柄中读取一行字符串。$handle为指向文件的资源句柄,$length指定要读取的最大字节数,返回读取的字符串。
例子:
$myfile = fopen("example.txt", "r") or die("无法打开文件!");
echo fgets($myfile);
fclose($myfile);
上面这个例子中,我们读取名为“example.txt”的文件中的 行,并将其输出到屏幕上。
5. fclose():关闭文件
语法:fclose(resource $handle) : bool
$fclose()函数用于关闭文件句柄,释放系统资源。$handle为指向文件的资源句柄,返回一个布尔值,表示该文件是否已成功关闭。
例子:
$myfile = fopen("example.txt", "r") or die("无法打开文件!");
fclose($myfile);
上面这个例子中,我们打开名为“example.txt”的文件,并且在处理完文件后,使用fclose()函数关闭这个文件。
二、目录操作函数
1. mkdir():创建目录
语法:mkdir(string $pathname, int $mode=0777, bool $recursive=false, resource $context=null) : bool
$mkdir()函数用于创建一个新目录。$pathname指定要创建的目录的名称,$mode指定了该目录的权限,$recursive为是否递归地创建目录(如果指定了路径不是已经存在的目录)。$context用于指定请求流的上下文,如超时、cookie等信息。
例子:
mkdir("newdir");
上面这个例子中,我们创建一个名为“newdir”的新目录。
2. opendir():打开目录
语法:opendir(string $path, resource $context=null) : resource
$opendir()函数用于打开指定的目录,返回一个指向目录的句柄资源,以便进一步操作。$path指定要打开的目录的路径,$context用于指定请求流的上下文,如超时、cookie等信息。
例子:
$dir = "/tmp";
//打开目录,返回目录句柄
if ($handle = opendir($dir)) {
//读取目录中的所有文件
while (false !== ($entry = readdir($handle))) {
echo "$entry
";
}
//关闭目录
closedir($handle);
}
上面这个例子中,我们打开了“/tmp”目录,并读取了该目录中的所有文件。最后,我们使用closedir()函数关闭了该目录。
3. readdir():读取目录中的文件
语法:readdir(resource $handle) : string|false
$readdir()函数用于从打开的目录中读取目录项。$handle为指向目录的句柄资源,返回该目录项的名称的字符串。当读到目录项的末尾时,返回false。
例子:
$dir = "/tmp";
//打开目录,返回目录句柄
if ($handle = opendir($dir)) {
//读取目录中的所有文件
while (false !== ($entry = readdir($handle))) {
echo "$entry
";
}
//关闭目录
closedir($handle);
}
上面这个例子中,我们打开了“/tmp”目录,并读取了该目录中的所有文件。最后,我们使用closedir()函数关闭了该目录。
4. rmdir():删除目录
语法:rmdir(string $directory, resource $context=null) : bool
$rmdir()函数用于删除指定的目录。$directory为要删除的目录的名称,$context用于指定请求流的上下文,如超时、cookie等信息。此函数只能删除空目录;如果目录中有任何文件,则rmdir()函数将失败。
例子:
rmdir("example");
上面这个例子中,我们删除了名为“example”的目录。
总结:
文件和目录操作在PHP中非常常见,在开发过程中十分重要。通过上述五个函数,我们可以实现文件和目录的创建、读取、写入、打开和关闭,以及目录的创建和删除等操作。这些函数可以帮助我们更加便捷地进行文件和目录的管理和维护。
