一、返回某目录下的所有文件(不包括子目录)
function getfiles($dir) { if ($dir != '' && substr($dir, strlen($dir) - 1) != '') { $dir .= '/'; } $row = array(); if (is_dir($dir)) { if ($di = opendir($dir)) { while (($file = readdir($di)) !== false) { if (is_file($dir . $file) && $file != '.' && $file != '..') { $row[] = $file; } } closedir($di); } } return $row; }
二、返回某目录下的所有目录
//返回某目录下的所有目录 function get_dir($dir) { if ($dir != '' && substr($dir, strlen($dir) - 1) != '') { $dir .= '/'; } $row = array(); if (is_dir($dir)) { if ($di = opendir($dir)) { while (($file = readdir($di)) !== false) { if (is_dir($dir . $file) && $file != '.' && $file != '..') { $row[] = $file; } } closedir($di); } } return $row; }
三、删除文件-unlink
1.基本用法
在PHP中,unlink
函数用于删除文件。其用法如下:
bool unlink ( string $filename [, resource $context ] )
参数说明:
$filename: 要删除的文件的路径和文件名。
$context(可选): 这是一个可传递给 unlink 函数的上下文资源(例如,一个打开的文件句柄)。
返回值:
如果成功删除文件,则返回 true。
如果出现错误,例如文件不存在或没有足够的权限删除文件,则返回 false。
使用示例:
$file = 'path/to/file.txt'; if (unlink($file)) { echo '文件删除成功'; } else { echo '文件删除失败'; }
需要注意的是,unlink
函数只能用于删除文件,而不能用于删除文件夹。如果你需要删除文件夹,可以使用rmdir
函数(用于删除空文件夹)或递归删除文件夹中的所有文件和子文件夹。
2.实战使用
function del_file($file) { $delete = @unlink($file); clearstatcache(); if (@file_exists($file)) { $filesys = str_replace("/", "\\", $file); $delete = @system("del $filesys"); clearstatcache(); if (@file_exists($file)) { $delete = @chmod($file, 0777); $delete = @unlink($file); $delete = @system("del $filesys"); } } clearstatcache(); if (@file_exists($file)) { return false; } else { return true; } }
3.clearstatcache的用法
在 PHP 中,clearstatcache 函数用于清除文件状态缓存。该函数可以清除对文件或目录进行的 stat、file_exists、is_readable、is_writable 以及其他文件相关函数所使用的缓存。
以下是 clearstatcache 函数的用法:
void clearstatcache( bool $clear_realpath_cache = false, string $filename = "" )
参数说明:
$clear_realpath_cache(可选):如果设置为 true,会同时清除 realpath 缓存,也就是清除由 realpath 函数缓存的路径解析结果。默认值为 false。
$filename(可选):要清除相关缓存的文件名。如果指定了文件名,则只清除与该文件相关的缓存。默认为空字符串,表示清除所有缓存。
使用示例:
$file = 'path/to/file.txt'; // 执行一些与文件状态相关的操作 echo file_exists($file); // 输出 1 // 清除缓存 clearstatcache(); // 重新执行文件不存在检查 echo file_exists($file); // 输出 0
当你在对文件状态进行多次操作且需要确保获取最新的文件状态时,可以调用 clearstatcache
函数来清除缓存。例如,当你修改了文件的属性或删除了文件时,调用该函数可以确保下一次操作能够获取最新的文件状态信息。
4.system(“del $filesys”)
在 PHP 中,system 函数用于执行系统命令。当你调用 system("del $filesys") 时,它将执行类似于在命令行中运行 del $filesys 命令的操作。该命令用于在 Windows 操作系统中删除指定的文件。
以下是 system 函数的用法:
string system( string $command [, int &$return_var ] )
参数说明:
$command
:要执行的系统命令。$return_var
(可选):一个用于存储命令的返回值的变量。如果提供了该参数,则在执行命令后,该变量将被设置为命令的返回值。
返回值:
- 返回命令的输出结果(如果有)作为字符串。
使用示例:
$filesys = 'path/to/file.txt'; $command = "del $filesys"; $output = system($command, $return_var); if ($return_var === 0) { echo '文件删除成功'; } else { echo '文件删除失败'; }
需要注意的是,system 函数执行的命令可能会受到系统安全设置的限制,因此在使用该函数时要小心谨慎。确保 $filesys 参数的值是你期望删除的文件路径,并做好必要的安全验证和过滤,以防止潜在的安全问题。此外,system 函数会直接在终端上执行命令,因此请确保只调用可信任的命令,并避免使用用户动态输入的值,以防止命令注入攻击。
5.递归删除某个目录下的全部文件
function del_dir($directory) { if (is_dir($directory)) { //递归删除某个目录下的全部文件 if ($dh = @opendir($directory)) { while ($filename = readdir($dh)) { if ($filename != "." && $filename != "..") { //是文件则删除文件 if (is_file($directory . "/" . $filename)) { unlink($directory . "/" . $filename); } else { //非空目录则递归删除子文件夹或文件 del_dir($directory . "/" . $filename); rmdir($directory . "/" . $filename); } } } @closedir($dh); //rmdir($directory); } } else { //直接删除指定某个文件 if (file_exists($directory)) { unlink($directory); } } }
四、创建目录-mkdir
1.基本用法
使用PHP中的mkdir
函数在Windows和Linux系统中创建文件夹时,主要区别在于路径分隔符和权限设置。
- 路径分隔符:
- 在Windows系统中,路径分隔符是反斜杠(\)。例如,
mkdir('C:\my_folder')
。 - 在Linux系统中,路径分隔符是正斜杠(/)。例如,
mkdir('/
home/my_folder')
。
权限设置:
在Windows系统中,mkdir函数会自动继承父目录的权限设置,并在所创建的文件夹中赋予当前用户完全控制权限。
在Linux系统中,mkdir函数创建的文件夹默认权限为755(rwxr-xr-x),这意味着所有者对文件夹有读、写和执行权限,而组和其他用户只有读和执行权限。这个权限设置可以根据需求进行修改。
在使用mkdir
函数创建文件夹时,建议采用可移植的方式,即使用正斜杠作为路径分隔符,并在需要的情况下手动设置合适的权限。例如:
// 在Windows中创建文件夹 mkdir('C:/my_folder'); // 在Linux中创建文件夹,并设置权限为777 mkdir('/home/my_folder'); chmod('/home/my_folder', 0777);
请注意,对于某些特殊情况,如需要创建多层嵌套的文件夹,可能需要在代码中添加额外的逻辑来确保父级目录存在。
2.封装使用
//创建目录 function mdir($directoryName) { $directoryName = str_replace("\\", "/", $directoryName); $dirNames = explode('/', $directoryName); $total = count($dirNames); $temp = ''; for ($i = 0; $i < $total; $i++) { $temp .= $dirNames[$i] . '/'; if (!is_dir($temp)) { $oldmask = umask(0); if (!mkdir($temp, 0777)) exit("can't md dir $temp"); umask($oldmask); } } return true; }
五.写入文件
1.基本用法
在PHP中,fopen
函数用于打开文件或URL,并返回一个文件句柄,以便你可以对其进行读取、写入或其他操作。
以下是 fopen
函数的用法:
resource fopen ( string $filename , string $mode [, bool $use_include_path = FALSE [, resource $context ]] )
参数说明:
$filename:要打开的文件的路径和文件名。
$mode:打开文件的模式。常用的模式有:
r:只读模式,从文件开头开始读取。
w:只写模式,将文件截断为零长度,如果文件不存在则创建。
a:追加模式,写入到文件末尾,如果文件不存在则创建。
x:独占创建模式,如果文件已经存在则打开失败。
等等,还有其他模式可供选择,请参考 PHP 官方文档获取更多信息。
$use_include_path(可选):如果设置为 true,则在打开文件时会搜索 include_path 中指定的路径。默认值为 false。
$context(可选):上下文资源,可以将其传递给 fopen 函数,用于特定的文件操作设置。
返回值:
如果文件打开成功,则返回一个表示打开文件的资源句柄(resource),可以供后续对文件的操作使用。
如果出现错误,例如文件不存在或没有足够的权限打开文件,则返回 false。
使用示例:
$file = 'path/to/file.txt'; $handle = fopen($file, 'r'); if ($handle) { // 读取文件内容 $content = fread($handle, filesize($file)); echo $content; // 关闭文件 fclose($handle); } else { echo '文件打开失败'; }
在打开文件后,你可以使用其他函数如 fread
、fwrite
、fgets
、fputcsv
等进行文件的读写操作。记得在完成文件操作后,使用 fclose
函数关闭文件句柄以释放资源。
2.实战使用
function write_file($filename, $contents) { if ($fp = fopen($filename, "w")) { //fwrite($fp,stripslashes($contents)); $contents = trim($contents) == '' ? ' ' : $contents; fwrite($fp, $contents); fclose($fp); return true; } else { return false; } }
@漏刻有时