我有一个文件,我必须添加2行。 为此我打开文件,读取行,添加新行并将文件保存为新的临时文件。现在我想删除原始文件并将新文件重命名为原始文件名。但不知怎的,它没有发生。
unlink $file;
rename($outfile,"D:/Test/Original.cxx") or die;
这就是我刚才尝试过的方法。 任何帮助!
答案 0 :(得分:1)
如果这仍然无效,你应该知道为什么
unlink($file) && rename($outfile,$file) or die "$! $file";
答案 1 :(得分:1)
您应该尝试测试命令的输出。 unlink命令返回已删除的文件数。您可以使用此信息来测试文件是否已删除:
unlink $file or die qq(Cannot delete file "$file"\n;
rename $outfile, $file or die qq(Cannot rename file "$outfile" to "$file\n);
这会让您了解unlink
是失败还是rename
。该文件仍有可能仍处于打开状态。如果要在文件中添加行,请确保先使用close
关闭文件句柄:
open my $in_fh, "<", $file or die qq(Cannot open "$file" for reading\n);
open my $out_fh, ">", $outfile or die qq(Cannot open file "$outfile" for writing\n)
... #What ever you're doing
close $in_fh; #Close your files, so nothing is holding them open.
close $out_fh;
unlink $file or qq(Cannot delete file "$file"\n);
rename $outfile, $file or qq(Cannot rename "$outfile" to "$file"\n);
在Windows上,在执行任何操作之前关闭所有文件句柄尤为重要。即使读取也会阻止您对文件执行任何操作。