简单的文件删除代码在 Java 中不起作用

Ade*_*eel 2 java file delete-file

这是我删除pdf文件的代码

try {
    File file = new File(docObjectId + ".pdf");
    file.setWritable(true);
    System.out.println(file.length());
    if (file.delete()) {
        System.out.println(file.getName() + " is deleted!");
    } else {
        System.out.println("Delete operation is failed.");
    }
} catch (Exception e) {
    e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

它转到代码的 else 部分。

PDF 文件位于项目根文件夹中,我可以手动删除它。现在抓我的头。

这里是完整的方法。这可能是由于其他一些原因

public Response getContractDocument(@PathParam("docid") String docObjectId) throws Exception {
    DocumentumService documentumService = new DocumentumService(documentumConfigUtil);
    DocumentumDocumentBean docDocumentBean = documentumService.getContractDocContent(docObjectId, true);

    FileInputStream fileInputStream;
    fileInputStream = new FileInputStream(docDocumentBean.getDocFile());
    compressPdf(fileInputStream,docObjectId + ".pdf");

    fileInputStream = new FileInputStream(docObjectId + ".pdf");


    ResponseBuilder responseBuilder = Response.ok((Object) fileInputStream);
    try {
        File file = new File(docObjectId + ".pdf");
        System.out.println(file.getAbsolutePath());
        file.setWritable(true);
        System.out.println(file.length());

        File d = new File(file.getAbsolutePath());
        if (d.delete()) {
            System.out.println(file.getName() + " is deleted!");
        } else {
            System.out.println("Delete operation is failed.");
        }
    } catch(Exception e) {
        e.printStackTrace();
    }
    return responseBuilder.build();
}
Run Code Online (Sandbox Code Playgroud)

小智 6

我的经验是窗户。文件不会删除的原因总是相同的。某些对象与文件有连接并保持打开状态。在这种情况下,它看起来可能是 fileInputStream。

在尝试删除之前尝试此操作:

fileInputStream.close();
Run Code Online (Sandbox Code Playgroud)