ファイルの内容を変更しているため、ファイルを 1 行ずつ読み取り、必要なものを置き換えて、1 行ずつ一時ファイルに書き込みます。ファイル全体が処理されたら、元のファイルを削除し、一時ファイルの名前を元のファイル名に変更します。このような
File orginialFile = new File("C:\\java\\workspace\\original.xml");
File tempFile = File.createTempFile("tempfile", ".tmp", new File(C:\\java\\workspace\\"));
while ((str_String = reader.readLine()) != null) {
//read lines and replace and write lines
}
orginialFile .delete();
tempFile.renameTo(new File("C:\\java\\workspace\\original.xml"));
これが完了したら、一時ファイルの絶対パス (tempFile.getAbsolutePath();) を要求します。しかし、これにより、 c:\java\workspace\original.xml の代わりに c:\java\workspace\tempfile3729727953777802965.tmp (プログラムの実行ごとに番号が変わります) が得られます。
どうして?
私はそれをデバッグし、絶対パスを要求する直前に c:\java\workspace (Windows エクスプローラー) をチェックインしましたが、tempfile はありません。オリジナルファイルのみ。
したがって、プロセスは正しく実行されます。名前が変更された絶対パスが表示されない理由を知りたかっただけです。(ログに使用します)
どうも