-2

我已经编写了以下代码来合并和删除源文件,但不知何故源文件没有被删除。任何人都可以说明我在这里缺少什么。

    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();             
        }
    }   
}
4

2 回答 2

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 )

于 2012-05-09T08:18:15.220 回答
0

在您的 createFileFromBlob 方法中,您正在打开多个 FileOutputStreams(对于 dID.listIterator() 的每个元素),但只关闭 finally 块中的最后一个。这将为除最后一个文件之外的所有文件留下一个打开的句柄,防止它们按照 Pulsar 的回答被删除。

于 2012-05-09T08:27:06.453 回答