php实现扫描读取
PHP 实现扫描读取
使用 scandir 函数读取目录内容
scandir 是 PHP 内置函数,用于列出指定路径中的文件和目录。返回一个数组,包含目录中的所有文件和子目录。
$dir = '/path/to/directory';
$files = scandir($dir);
foreach ($files as $file) {
if ($file != '.' && $file != '..') {
echo $file . "\n";
}
}
使用 DirectoryIterator 遍历目录
DirectoryIterator 是 PHP 提供的面向对象的目录遍历方式,支持更灵活的过滤和操作。
$dir = new DirectoryIterator('/path/to/directory');
foreach ($dir as $fileinfo) {
if (!$fileinfo->isDot()) {
echo $fileinfo->getFilename() . "\n";
}
}
递归扫描子目录
如果需要递归扫描子目录,可以使用 RecursiveDirectoryIterator 结合 RecursiveIteratorIterator。
$dir = new RecursiveDirectoryIterator('/path/to/directory');
$iterator = new RecursiveIteratorIterator($dir);
foreach ($iterator as $file) {
if ($file->isFile()) {
echo $file->getPathname() . "\n";
}
}
读取文件内容
扫描到文件后,可以使用 file_get_contents 或 fopen 读取文件内容。
$fileContent = file_get_contents('/path/to/file.txt');
echo $fileContent;
过滤特定类型的文件
在遍历时可以通过文件扩展名过滤特定类型的文件。
$dir = new DirectoryIterator('/path/to/directory');
foreach ($dir as $fileinfo) {
if ($fileinfo->isFile() && $fileinfo->getExtension() == 'txt') {
echo $fileinfo->getFilename() . "\n";
}
}
使用 glob 函数匹配文件模式
glob 函数支持通配符匹配,适合快速查找特定模式的文件。
$files = glob('/path/to/directory/*.txt');
foreach ($files as $file) {
echo $file . "\n";
}
处理大文件时的分块读取
对于大文件,建议使用 fopen 和 fgets 逐行或分块读取,避免内存溢出。

$handle = fopen('/path/to/largefile.txt', 'r');
if ($handle) {
while (($line = fgets($handle)) !== false) {
echo $line;
}
fclose($handle);
}
注意事项
- 路径需要使用绝对路径或相对路径的正确格式。
- 检查目录和文件的可读权限。
- 处理特殊字符或符号链接时需额外验证。
- 递归扫描时注意目录深度,避免性能问题。






