我有一个文件,我必须在其中添加 2 行。为此,我打开文件,读取行,添加新行并将文件另存为新的临时文件。现在我想删除原始文件并将新文件重命名为原始文件名。但不知何故,它没有发生。
unlink $file;
rename($outfile,"D:/Test/Original.cxx") or die;
这就是我刚才尝试的方式。任何帮助!
如果这仍然不起作用,你应该得到一个很好的线索为什么
unlink($file) && rename($outfile,$file) or die "$! $file";
您应该尝试测试命令的输出。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 上,在执行任何操作之前关闭所有文件句柄尤为重要。即使是读取也会阻止您对文件执行任何操作。