我正在尝试使用file.delete()
,但它不会删除文件?我在linux
上对其进行了测试,删除了文件,但在windows
上却没有删除文件原因..?
代码:
private File getFiletobeUpload(File foto) {
boolean errorRename = true;
File uploadFile = null;
File testFile = foto;
String subdirname = this.checkDir(foto);
if (testFile.canWrite()) {
uploadFile = new File(AppConstants.PHOTOPATH + "/" + subdirname + "/" + testFile.getName());
try {
FileInputStream origStream = new FileInputStream(testFile);
FileOutputStream outStream = new FileOutputStream(uploadFile);
origStream.getChannel().transferTo(0, testFile.length(), outStream.getChannel());
origStream.close();
origStream = null;
outStream.close();
outStream = null;
} catch (Exception e) {
this.errorString += "error while writing to orig dir";
logger.error(e);
}
errorRename = !testFile.delete();
if (errorRename) {
this.errorString += "error while deleting the file";
}
}
testFile = null;
return uploadFile;
}
答案 0 :(得分:0)
您的代码似乎有点奇怪,您正在检查" testFile"用于写访问但实际上从它读取(FileInputStream)。第一个try / catch块是否正常运行?也许您应该检查文件是否存在:
System.out.println("File exists: "+testFile.exists());
errorRename = !testFile.delete();
此外,如果您只想重命名文件,请使用:
file.renameTo(File dest)
答案 1 :(得分:0)
一般建议:如果可以,请考虑使用java.nio包中的类到您的文件IO(不确定您正在运行哪个版本的Java),因为错误处理已得到改进,您应该能够根据抛出的异常类型和异常消息找到更具体的失败原因。
答案 2 :(得分:-1)
根据API,磁盘驱动器说明符 - " /"对于UNIX根目录," \\"对于Microsoft Windows UNC路径名。
所以对于Windows:
uploadFile = new File(AppConstants.PHOTOPATH + "\\" + subdirname + "\\" + testFile.getName());