私は、ディレクトリ/ファイルのリストをダウンロードし、一時Tempディレクトリ(%LocalAppData%/Temp/
のディレクトリ)に保存するJava 8アプリケーションを開発中です。すべてのダウンロードの後、XMLファイルが生成され、テキストとしてデータベースに保存されます。FileUtilsを使用してtempフォルダを削除できません
Tempディレクトリを使用して作成されます。私のJUnitテストで
Path packageTargetDirectory = java.nio.file.Files.createTempDirectory("packages");
を、私は機能をテストします。できます。だから、テストの後、私はテストコードを使って、コンテンツを再帰的にディレクトリを削除したい(org.apache.commons.io.FileUtils.deleteDirectory()
メソッドを使用して)。
このメソッドは、@After
注釈で注釈が付けられたテスト関数で呼び出されます。メソッドを呼び出して、コードをテストする場合、私はIOException
を得る:
java.io.IOException: Unable to delete directory C:\Users\martin\AppData\Local\Temp\packages3096883734780765073\WindowsAzure.Storage
私はディレクトリになった、とだけテストを実行した後に、それを削除しようとしました:私はそれを自分自身を削除することができます。私は多くのことを試みました。私はorg.apache.commons.io.FileUtils.forceDelete()
メソッドを試しました。私はまた、削除の次のコードを試してみました:
Files.walkFileTree(testDataDirectory, new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
Files.delete(file);
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException {
Files.delete(dir);
return FileVisitResult.CONTINUE;
}
});
すべては、ディレクトリ構造を削除することに失敗しました。内容が削除されたようです。
一時フォルダ内のディレクトリを削除できないという問題がありますか?私は開かれた流れを考えていたが、私はそれらのすべてを閉じたようだ。
フォルダーの作成はテストコードではなく、他のコードで行われるためです。 – Martin
*通常の*コードでは、ファイルをダウンロードし、一時ディレクトリに保存します。コードによってはファイルが生成されます。その特定のファイルにPathインスタンスを返します。ファイルの親(削除するディレクトリ)を取得します。 – Martin
ファイルをダウンロードするディレクトリを変更できますか? JUnitから最終的に1つを使用します。これにより間違いなくより良いテストが可能になります。 – Admit