2011-07-27 46 views
0

我有一个目录,有说10个.txt文件。使用打开目录:阅读文件列表,并重新写入主列表

$dir_handle = @opendir($path) or die("Unable to open $path"); 

我需要能够读取该文本文件的文件名,然后将所有这些文件的名称写入主列表用|在每个文件名之后。我也不希望masterlist.txt写入其本身lol。因此,masterlist.txt是使用.txt文件的文件名写入的内容。

回答

1

使用readdir()在目录上循环,并验证每个条目不是主列表或...。用file_put_contents()将它写入文件。

// If master.txt already exists, delete it. 
if (file_exists('master.txt')) { 
    unlink('master.txt'); 
} 

$dir_handle = @opendir($path) or die("Unable to open $path"); 
while ($f = readdir($dir_handle)) { 
    if ($f != '.' && $f != '..' && $f != 'master.txt') { 
    file_put_contents('master.txt', $f . "|", FILE_APPEND); 
    } 
} 

如果你只是想.txt文件,使用这样的:

if (preg_match('/^(.+)\.txt$/', $f)) { 
    // it's a .txt file. 
} 
+0

工作真棒!我如何让它覆盖主文件而不是更新。因此,每次它通过目录get的文件名时,它都会写入干净/空白的主文件,而不是只更新它。 – Jason

+0

请参阅上面的'file_exists()'。这将在写入新的之前删除现有的master.txt。 –