我正在使用BufferedImage
通过一些测试创建.PNG文件。现在,在创建图像之后,我尝试将.PNG图像转换为.TIF,效果很好。现在,一旦我创建了TIF图像,我想删除PNG图像。但是由于某些原因,我无法执行此操作。对此没有任何例外。
这是我的代码
File pngFile = null;
FileOutputStream fOut = null;
try {
pngFile = new File("C:\\Test.PNG");
fOut = new FileOutputStream ("C:\\Test.TIF");
RenderedOp src = JAI.create("fileload", "C:\\Test.PNG");
TIFFImageEncoder encoder = new TIFFImageEncoder (fOut, null);
encoder.encode (src);
}catch(Exception e) {
}finally {
fOut.close();
System.out.println(pngFile.delete());
}
由于您的catch块为空,因此绝对没有例外。
[某些内容可能仍在保存文件的句柄,不允许删除它。我将检查JAI.create,RenderedOp和TiffEncoder。
代替提供文件路径为字符串,您可以提供输入流,最后关闭输入流,然后删除文件。这可能有效。
我之前曾遇到过同样的问题。在这种情况下,最好的方法是,
首先使用您创建的图像对象处理资源,如下所示var image = Image.FromFile(pngTarget); //这里pngTarget是我的PNG文件的名称以及完整路径。
//您的代码将png转换为tiff。。。
在方法结尾处,您可以在下面编写
image.Dispose(); //我在上面创建的图像对象
File.Delete(pngTarget); //删除文件
此外,如果使用任何内存,请不要忘记刷新/关闭内存流。
谢谢。