2013-07-03 22 views
1

我正在使用BufferedImage創建.PNG文件,並進行了一些測試。現在創建圖像後,我試圖將.PNG圖像轉換爲.TIF,它工作正常。現在,一旦我創建TIF圖像,我想刪除PNG圖像。但由於某種原因,我無法做到這一點。這沒有任何例外。從PNG到TIF的圖像轉換後無法刪除圖像文件

這裏是我的代碼

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

什麼是JAI?我認爲JAI在創建方法的第二個參數時打開了一個流,但沒有關閉它... – Toilal

+0

「File」對象沒有'close()'函數 – Navnath

+0

當然。但是JAI.create可能會打開一個InputStream而不關閉它。你必須調查你的神祕的JAI類... – Toilal

回答

0

那麼有絕對也不例外,因爲你的catch塊是空的。

某些東西可能仍然持有該文件的句柄,不允許將其刪除。 我會檢查JAI.create,RenderedOp和TiffEncoder。

+0

上面的代碼,我剛剛創建要張貼在這裏。我的實際代碼包含例外打印。 – Navnath

0

而不是提供文件路徑作爲字符串,您可以提供輸入流,並在最後首先關閉輸入流,然後刪除該文件。這可能工作。