PHP:从文件夹中的第一个文件获取内容,然后将其删除

时间:2013-08-28 11:41:08

标签: php unlink

使用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。有人可以开导我吗?我在这里缺少什么?

可选(联合国)相关问题:如果我有像.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");

1 个答案:

答案 0 :(得分:2)

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

其次,因为您正在使用FILE_USE_INCLUDE_PATH,所以您不确切知道文件的位置,并且unlink会解析与当前工作目录相关的内容,这很可能不是{{1} }。

使用$a,你会没事的。

至于无关的问题 - 使用scandir获取文件夹中的所有文件,然后将natsort应用于生成的数组,以按“自然排序算法”进行排序。请注意,目录列表始终还会列出您必须检测并手动跳过或删除的文件夹unlink($a.'/'.$entry).