我从文本文件中获取数据(数据是:daa1 daa2 daa3在不同的行上),然后尝试创建具有确切名称的文件夹,但只创建了daa3文件夹。此外,当我使用整数时,它会创建所有文件夹,静态字符串就是这种情况,即" faraz"。
$file = __DIR__."/dataFile.txt";
$f = fopen($file, "r");
$line =0;
while ( $line < 5 )
{
$a = fgets($f, 100);
$nl = mb_strtolower($line);
$nl = "checkmeck/".$nl;
$nl = $nl."faraz"; // it works for static value i.e for faraz
//$nl = $nl.$a; // i want this to be the name of folder
if (!file_exists($nl)) {
mkdir($nl, 0777, true);
}
$line++;
}
请帮助
答案 0 :(得分:2)
使用feof
函数更好地逐行获取文件内容
检查此完整代码
$file = __DIR__."/dataFile.txt";
$linecount = 0;
$handle = fopen($file, "r");
$mainFolder = "checkmeck";
while(!feof($handle))
{
$line = fgets($handle);
$foldername = $mainFolder."/".trim($line);
//$line is line name daa1,daa2,daa3 etc
if (!file_exists($foldername)) {
mkdir($foldername, 0777, true);
}
$linecount++;
unset($line);
}
fclose($handle);
输出文件夹
1countfaraz
2countfaraz
3countfaraz
答案 1 :(得分:1)
不确定为什么您的代码出现问题,但我发现使用file_get_contents()
代替fopen()
和fgets()
更为直接:
$file = __DIR__."/dataFile.txt";
$contents = file_get_contents($file);
$lines = explode("\n", $contents);
foreach ($lines as $line) {
$nl = "checkmeck/". $line;
if (!file_exists($nl)) {
echo 'Creating file '. $nl . PHP_EOL;
mkdir($nl, 0777, true);
echo 'File '. $nl .' has been created'. PHP_EOL;
} else {
echo 'File '. $nl .' already exists'. PHP_EOL;
}
}
上面的echo
语句用于调试,以便您可以查看代码正在执行的操作。一旦它正常工作,你可以删除它们。
因此,您获取整个文件内容,用换行符(explode()
)拆分它(\n
),然后遍历文件中的行。如果您说的是真的,文件看起来像:
daa1 daa2 daa3
...然后它应该创建以下文件夹:
checkmeck/daa1 checkmeck/daa2 checkmeck/daa3