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?
@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 –