私はicefacesを使用して、Webアプリの相対パスにファイルをアップロードして(mywebapp/audio)
います。次に、ファイルがアップロードされた後、次のようにファイルの名前を変更して拡張子を保存します。
public static File changeExtToWav(FileInfo fileInfo,
StringBuffer originalFileName) {
log.debug("changeExtToWav");
int mid = fileInfo.getFile().getName().lastIndexOf(".");
String fileName = fileInfo.getFile().getName().substring(0, mid);
originalFileName.append(fileName);
log.debug("originalFileName: " + originalFileName);
String newFileName = fileName + "_" + new Date().getTime() + "."
+ "wav";
File newFile = new File(fileInfo.getFile().getParent() + "/"
+ newFileName);
log.debug("newFileName: " + newFile.getName());
fileInfo.getFile().renameTo(newFile);
return newFile;
}
ファイルがアップロードされた後、次のようにUIボタンからファイルを削除したい場合があります。
try {
File fileToDelete = new File(filePath); // correct file path
log.debug("file exists: " + fileToDelete.exists()); // true
fileToDelete.delete();
} catch (Exception e) {
e.printStackTrace();
}
ファイルパスは正しく、例外はありませんが、ファイルは削除されません(java 6 btwを使用しています)。この問題を修正する方法を教えてください。
更新:次の便利な方法を使用して、ファイルが開かれていることを確認できます。ファイルを閉じる方法はありますか?
public String getReasonForFileDeletionFailureInPlainEnglish(File file) {
try {
if (!file.exists())
return "It doesn't exist in the first place.";
else if (file.isDirectory() && file.list().length > 0)
return "It's a directory and it's not empty.";
else
return "Somebody else has it open, we don't have write permissions, or somebody stole my disk.";
} catch (SecurityException e) {
return "We're sandboxed and don't have filesystem access.";
}
}