2010-09-19 16 views
2

我正在嘗試從網絡中檢索到的圖像中編寫PNG文件。這是我在做什麼(在HTTP代碼和IOUtils魔術都來自Apache的):爲什麼我無法使用Java從下載的源中正確地在Windows上編寫PNG文件?

public static void main(String[] args) throws Exception { 
    HttpClient client = new DefaultHttpClient(); 
    HttpGet get = new HttpGet(new URI("http://tinyurl.com/krb43g")); 
    HttpResponse response = client.execute(get); 
    HttpEntity entity = response.getEntity(); 
    byte[] data = IOUtils.toByteArray(entity.getContent()); 
    File tempFile = File.createTempFile("Picture", ".png"); 
    Writer writer = new BufferedWriter(new FileWriter(tempFile)); 
    IOUtils.write(data, writer); 
    writer.close(); 
    Runtime.getRuntime().exec("rundll32.exe \"C:\\Program Files (x86)" + 
      "\\Windows Photo Viewer\\PhotoViewer.dll\", ImageView_Fullscreen " 
      + tempFile.getAbsolutePath()); 
} 

,圖像仍損壞以某種方式與Windows無法顯示。我在寫錯了嗎?

回答

4

當您應該使用OutputStream時,您正在使用Writer。嘗試更換涉及以下配置的作家行:

OutputStream stream = new FileOutputStream(tempFile); 
IOUtils.write(data, stream); 
stream.close(); 
+1

@HenryTyler:只需添加到這個答案,'Writer'是編寫*字符流*,*不是字節流*:HTTP://下載.oracle.com/JavaSE的/ 6 /文檔/ API/JAVA/IO/Writer.html – 2010-09-19 12:25:47

相關問題