2011-01-12 22 views
9

Ich frage mich, was der richtige Weg wäre zu gehen, um das Bild von diesem RUL Download: http://www.hidemyass.com/proxy-list/img/port/7018246/1Groovy herunterladen Bild von URL

So wie ich es versucht, das Herunterladen, verlässt die Datei in einem unbekannten Format. Das aktuelle Code-Snippet, das ich getestet habe, lautet:

public void download(def address) { 

    def file = new FileOutputStream(address.tokenize("/")[-1]) 
    def out = new BufferedOutputStream(file) 
    out << new URL(address).openStream() 
    out.close() 
} 

Antwort

17

Funktioniert das? Ich glaube, es sollte:

public void download(def address) { 
    new File("${address.tokenize('/')[-1]}.png").withOutputStream { out -> 
    out << new URL(address).openStream() 
    } 
} 
9

Dank Tim fand ich auch Ihre Antwort sehr hilfreich, nur kleine Anmerkung: Sieht aus wie Sie nicht geschlossen URL Strom haben. Ich fange gerade mit Groovy, und ich habe gehört, dass es in der Nähe dampft beim Austritt aus Verschluss so können wir Code wie das ändern:

public void download(def address) { 
    new File("${address.tokenize('/')[-1]}.png").withOutputStream { out -> 
     new URL(address).withInputStream { from -> out << from; } 
    } 
} 
2

Sie können Bildtyp aus ihrem Inhaltstyp erhalten - URLConnection.getContentType() oder von Byte Array:

content="http://www.google.ru/images/logo.png".toURL().getBytes() 
ext=URLConnection.guessContentTypeFromStream(new ByteArrayInputStream(content)).replaceFirst("^image/","") 
new File("logo."+ext).setBytes(content)