我编写了一个小程序,它压缩一个tiff文件并将压缩后的一个文件放在一个单独的文件夹中"压缩" ,当我尝试对其执行操作时,生成的新文件被java.exe锁定。
当我手动运行该方法然后java.exe没有锁定它但是当我通过Web服务调用调用该方法然后它被锁定时,不知道为什么会发生这种情况,但是锁定只持续一段时间,之后我可以删除它
答案 0 :(得分:1)
您需要关闭用于编写文件的资源。
例如FileWriter
和BufferedWriter
:
FileWriter fw = null;
BufferedWriter bw = null;
try {
fw = new FileWriter(new File(outputFile));
bw = new BufferedWriter(fw);
bw.write(content);
} catch (Exception e) {
// do something with e
} finally {
if(bw != null) {
bw.close(); // release the resource
}
}
使用try-with-resources,它会自动关闭try
块:
try(FileWriter fw = new FileWriter(new File(outputFile));
BufferedWriter bw = new BufferedWriter(fw)) {
bw.write(content);
}
答案 1 :(得分:0)
问题是因为垃圾收集器,当从netbeans运行时,我猜netbeans在每次程序执行后调用垃圾收集器,但不是Webservice调用的情况,在我的代码中显式调用GC后问题已解决。