我正在使用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());
}
答案 0 :(得分:0)
因为你的catch块是空的,所以肯定没有异常。
有些东西可能仍然保留文件的句柄,不允许删除它。 我会检查JAI.create,RenderedOp和TiffEncoder。
答案 1 :(得分:0)
您可以提供输入流,最后先关闭输入流,然后删除文件,而不是将文件路径作为字符串提供。这可能有效。
答案 2 :(得分:0)
我之前曾遇到过同样的问题。最好的方法是首先使用创建的图像对象处理资源,如下所示-
var image = Image.FromFile(pngTarget); // here pngTarget is my PNG file's name along with complete path.
// your code to convert png to tiff
.
.
.
该方法的结尾,您可以在下面编写-
image.Dispose(); // the image object I have created above
File.Delete(pngTarget); // delete the file
此外,请不要忘记刷新/关闭内存流(如果使用的话)。
谢谢。