0

使用 PHP,我想从文件夹中的第一个文件中获取内容,并在加载内容时删除该文件。这是我所拥有的:

$a = opendir('./');
while (false !== ($entry = readdir($a))) {
    if($entry != '.' && $entry != '..') {
        echo $entry = file_get_contents('./'.$entry.'', FILE_USE_INCLUDE_PATH);
        break; // only need the first file
        }
    }

上面的代码加载文件夹中的第一个文件,我可以使用类似的东西成功删除它

unlink("temp.txt");

所以没有权限被拒绝的错误。但我需要做的是通过变量名删除文件(因为每个文件名都不同)。令我惊讶的是,unlink("$entry");或者类似的东西不允许我删除它,而是在该文件内容的前几行中显示警告。如果我回$entry显它正确显示 temp.txt。有人可以启发我吗?我在这里想念什么?

可选(非)相关问题:如果我有数字文件,如 1.txt、2.txt、3.txt、10.txt...。有没有办法可以修改上面的代码,它确实如此不加载像 1,10,2,3 ...这样的文件,而是像 1,2,3,10...一样加载它?)

更新:有效的更新代码(供将来参考):

$a = opendir('./');
while (false !== ($entry = readdir($a))) {
    if($entry != '.' && $entry != '..') {
        echo $b = file_get_contents('./'.$entry.'', FILE_USE_INCLUDE_PATH);
        break; // only need the first file
        }
    } 
unlink("./$entry");
4

1 回答 1

2

第一个问题是您正在$entry用文件内容覆盖,因此文件名在尝试删除它时不再有效(解释文件内容的错误)。

其次,因为您正在使用FILE_USE_INCLUDE_PATH您不知道文件的确切位置,并且unlink解析与当前工作目录相关,这很可能不是$a.

使用unlink($a.'/'.$entry),你会没事的。

至于不相关的问题 - 用于scandir获取文件夹中的所有文件,然后应用于natsort结果数组以通过“自然排序算法”进行排序。请记住,目录列表始终还会列出您必须手动检测、跳过或删除.的文件夹。..

于 2013-08-28T11:43:50.547 回答