Files
Java 7 と新しいクラスに慣れてきました。
ある時点でファイルの内容を置き換える必要がある小さなアプリケーションを作成しています。何か問題が発生した場合にターゲット ファイルが消去されないように、一時ファイルを使用しました。AccessDeniedException
ただし、実際のコピーを実行すると、常にエラーが発生します。
これが私のコードです:
// Temporary file generation.
Path target = getCurrentConfigFile(); // Returns a path, works ok.
Path tempFile = Files.createTempFile("tempfile", null);
Files.write(tempFile, conf.getBytes(Charset.defaultCharset()), StandardOpenOption.WRITE);
// Actual copy.
Files.copy(tempFile, target, StandardCopyOption.REPLACE_EXISTING);
// Cleanup.
Files.delete(tempFile);
getCurrentConfigFile()
ターゲット ファイルのパス作成を処理します。
(... generates various strings from configuration parameters)
return FileSystems.getDefault().getPath(all, these, various, strings);
コードを実行すると、.bat
スクリプトを介して実行され、標準のコマンド プロンプトまたは昇格の両方でエラーが発生します。ターゲット ファイルはC:\temp\tests
、同じ Windows ユーザーで作成したディレクトリにあります。
ターゲットへの直接書き込みが機能するため、問題は一時ファイルからの読み取りにあるようです。次はどこを見ればいいですか?