所以,我有一个.txt文件,其中包含我丢失文件的路径。我想写一个小的PHP脚本,它只会创建这些文件并将它们留空。
xxx/yyy/xyxy/a/w/r/obvestilo.pdf
xxx/yyy/xyxy/b/print.pdf
xxx/yyy/xyxy/c/speach.doc
这是我在.txt文件中包含丢失文件的示例。我希望脚本能够创建这些文件以及文件夹(如果它们还不存在),但我不知道从哪里开始。我正在考虑将.txt文件传输到一个数组,然后通过所有数组元素循环创建它们。
答案 0 :(得分:1)
请试试这个
$fp = fopen('files.txt','r');
while(($buffer = fgets($fp,4096)) !== false) {
$directory = substr($buffer,0,strrpos($buffer,'/') + 1);
mkdir($directory, 0755, true);
touch(trim($buffer));
}
files.txt
将以您帖子中的格式提供您的文件。
mkdir($directory, 0755, true);
将递归创建所需目录,touch
将创建一个空白文件。
答案 1 :(得分:1)
尝试以下内容:
$data = explode("\n", file_get_contents('file_list.txt'));
foreach($data as $filename) {
if(!file_exists(trim($filename))) {
file_put_contents(trim($filename), '');
}
}
这将为列表中尚未存在的每个文件写一个空字符串,因此您将获得空文件。它不会为你创建目录,如果你想这样做,你需要做一些更复杂的事情......
答案 2 :(得分:1)
我假设.txt文件中的路径是绝对路径。如果不是,你将不得不在路径前附加某种ROOT_DIRECTORY
常数。
通常,您希望将此功能放在一个类中,该类的唯一责任是创建这些空文件:
class EmptyFileCreater {
const USE_RECUSRION = true;
const DEFAULT_ACCESS = 0777;
public function create($path) {
$this->ensureDirectoryExists(dirname($path));
$this->createEmptyFile($path);
}
private function ensureDirectoryExists($directory) {
if (!is_dir($directory)) {
mkdir($directory, self::DEFAULT_ACCESS, self::USE_RECUSRION);
}
}
private function createEmptyFile($path) {
touch($path);
}
}
现在您可以使用此类生成所有文件。
// Retrieve the .txt file as an array of the lines in the file
$paths = file('path/to/missing_file_paths.txt');
$empty_file_creater = new EmptyFileCreater();
foreach ($paths as $path) {
$empty_file_creater->create($path);
}
答案 3 :(得分:1)
这对你有用:
<?php
$lines = file('test.txt'); ///path to your file
foreach ($lines as $line_num => $line)
{
$fp = fopen($line,"wb");
fwrite($fp,'');
fclose($fp);
}
?>
答案 4 :(得分:-1)
您可以使用此方法创建特定长度的随机名称。
/*
*
* Get Random number( 5 digit )
* @param int: 5
* @return alphnumeric string: length(5)
*/
public function getRandomNumber($length, $charset = 'abcdefghijkmnopqrpdctvwxyz3456789') {
$str = '';
$count = strlen($charset);
while ($length--) {
$str .= $charset[mt_rand(0, $count - 1)];
}
return $str;
}