0

2行追加する必要があるファイルがあります。そのために、ファイルを開き、行を読み取り、新しい行を追加して、ファイルを新しい一時ファイルとして保存します。元のファイルを削除し、新しいファイルの名前を元のファイル名に変更したいと思います。しかし、どういうわけかそれは起こっていません。

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

これが私が今それをやろうとした方法です。どんな助けでも!

4

2 に答える 2

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 に答える
1

それでもうまくいかない場合は、その理由をよく理解する必要があります

unlink($file) && rename($outfile,$file) or die "$! $file";
于 2013-03-04T21:23:47.493 に答える