Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 图像从PNG转换为TIF后无法删除图像文件_Java_Bufferedimage_Tiff - Fatal编程技术网

Java 图像从PNG转换为TIF后无法删除图像文件

Java 图像从PNG转换为TIF后无法删除图像文件,java,bufferedimage,tiff,Java,Bufferedimage,Tiff,我正在使用BuffereImage创建.PNG文件,并进行了一些测试。现在,在创建图像后,我正在尝试将.PNG图像转换为.TIF,这很好。现在,一旦我创建了TIF图像,我想删除PNG图像。但由于某种原因,我不能这样做。这一点也不例外 这是我的密码 File pngFile = null; FileOutputStream fOut = null; try { pngFile = new File("C:\\Test.PNG"); fOut = new FileOutputStre

我正在使用BuffereImage创建.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、renderop和TiffEncoder。

您可以提供输入流,最后先关闭输入流,然后删除文件,而不是以字符串形式提供文件路径。这可能行得通

我以前也遇到过同样的问题。最好的方法是首先使用您创建的图像对象来处理资源,如下所示-

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 
另外,如果使用任何内存流,请不要忘记刷新/关闭内存流


谢谢

JAI是什么?我认为JAI是在create方法的第二个参数上打开一个流,而没有关闭它……当然,File object没有关闭函数。但是JAI.create可以在不关闭输入流的情况下打开输入流。你必须在你神秘的JAI类中进行调查…上面的代码是我刚刚创建并发布在这里的。我的实际代码包含异常打印。