我正在使用php dir()函数从目录中获取文件并循环遍历它。
$d = dir('path');
while($file = $d->read()) {
/* code here */
}
但是这会返回false并给出
在null
上调用成员函数read()
但该目录存在且文件存在。
此外,我的上述代码还有其他选择吗?
答案 0 :(得分:1)
尝试使用它:
if ($handle = opendir('/path/to/files')) {
echo "Directory handle: $handle\n";
echo "Entries:\n";
/* This is the correct way to loop over the directory. */
while (false !== ($entry = readdir($handle))) {
echo "$entry\n";
}
/* This is the WRONG way to loop over the directory. */
while ($entry = readdir($handle)) {
echo "$entry\n";
}
closedir($handle);
}
答案 1 :(得分:1)
你可以试试这个:
$dir = new DirectoryIterator(dirname('path'));
foreach ($dir as $fileinfo) {
if (!$fileinfo->isDot()) {
var_dump($fileinfo->getFilename());
}
}
来源:PHP script to loop through all of the files in a directory?
答案 2 :(得分:0)
如果您的路径正确,请检查您的文件路径。那么请尝试这个代码,这可能对你有所帮助。感谢
<?php
$myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!");
// Output one character until end-of-file
while(!feof($myfile)) {
echo fgetc($myfile);
}
fclose($myfile);
?>
答案 3 :(得分:0)
如果您查看documentation,您会看到:
返回Directory的实例,或带有错误参数的NULL,或 如果发生其他错误,则为FALSE。
所以Call to member function read() on null
表示您收到了错误(我认为这是failed to open dir: No such file or directory in...
)。
您可以使用file_exists和is_dir来检查给定路径是否是目录以及它是否真的存在。
示例:
<?php
...
if (file_exists($path) && is_dir($path)) {
$d = dir($path);
while($file = $d->read()) {
/* code here */
}
}