2010-09-19 2 views
2

J'essaie d'écrire un fichier PNG à partir d'une image récupérée sur le web. Voilà ce que je fais (le code http et la magie IOUtils sont à la fois d'Apache):Pourquoi ne puis-je pas écrire correctement un fichier PNG sous Windows avec Java à partir d'une source téléchargée?

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()); 
} 

L'image est corrompu d'une certaine façon et Windows ne peut pas l'afficher. Est-ce que je fais quelque chose de mal avec l'écriture?

Répondre

4

Vous utilisez un enregistreur lorsque vous utilisez un OutputStream. Essayez de remplacer les lignes qui impliquent un écrivain qui suit:

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

@HenryTyler: Pour ajouter à cette réponse, 'Writer' est pour l'écriture * flux de caractères *, * pas flux d'octets *: http: // Télécharger .oracle.com/javase/6/docs/api/java/io/Writer.html –

Questions connexes