1

我正在使用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());
}
4

3 回答 3

0

好吧,绝对没有例外,因为您的 catch 块是空的。

某些东西可能仍然持有文件的句柄,不允许删除它。我会检查 JAI.create、RenderedOp 和 TiffEncoder。

于 2013-07-03T05:52:56.220 回答
0

您可以提供输入流,而不是将文件路径作为字符串提供,最后首先关闭输入流,然后删除文件。这可能有效。

于 2013-07-03T05:56:38.050 回答
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 

另外,不要忘记刷新/关闭内存流,如果使用的话。

谢谢。

于 2019-10-31T06:40:20.140 回答