我已经编写了以下代码来合并和删除源文件,但不知何故源文件没有被删除。任何人都可以对我在这里缺少的东西有所了解。
public void doDelete(List<String> dID)throws IOException {
String DID=null;
try{
for( ListIterator<String> iterator = dID.listIterator(); iterator.hasNext();)
{
DID= (String) iterator.next();
System.out.println("Deleting PDF" +DID);
File f =new File("E:\\TestFolder"+ "\\" +DID+".pdf");
if (!f.exists()) {
System.err.println("File " + f
+ " not present to begin with!");
return;
}
System.out.println(f.length());
System.out.println(f.getAbsolutePath());
boolean success = f.delete();
if (!success){
System.out.println("Deletion failed.");
}else{
System.out.println("File deleted."+DID);
}
}
}catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
}
答案 0 :(得分:2)
TL; DR但文件删除失败通常是由于文件仍处于打开状态。特别是当你在Windows上运行它时。 如果您想了解删除失败的原因,您可以使用Java 7文件API,它会将删除失败原因作为例外。
java.nio.Files.delete(...)
http://docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html#delete(java.nio.file.Path)
答案 1 :(得分:0)
在createFileFromBlob方法中,您打开多个FileOutputStreams(对于dID.listIterator()的每个元素),但只关闭finally块中的最后一个元素。这将为除了最后一个文件之外的所有文件保留一个打开的句柄,防止它们被Pulsar的答案删除。