0

我有一个文件,我必须在其中添加 2 行。为此,我打开文件,读取行,添加新行并将文件另存为新的临时文件。现在我想删除原始文件并将新文件重命名为原始文件名。但不知何故,它没有发生。

unlink $file;
rename($outfile,"D:/Test/Original.cxx") or die;

这就是我刚才尝试的方式。任何帮助!

4

2 回答 2

1

如果这仍然不起作用,你应该得到一个很好的线索为什么

unlink($file) && rename($outfile,$file) or die "$! $file";
于 2013-03-04T21:23:47.493 回答
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 上,在执行任何操作之前关闭所有文件句柄尤为重要。即使是读取也会阻止您对文件执行任何操作。

于 2013-03-04T22:38:12.287 回答