On Sat, 7 Dec 2002 12:33:08 +0100, "Simon..." <devnull@linux.org>
wrote:
>hej,
>
>jeg prøver på at hente et billede fra en URL og skrive det en lokal fil, men
>jeg ender hele tiden med en
>lille bitte fil på 4 byte ? - er der en nemmere måde at gøre det her på,
>og en der virker ?
Du mangler såmænd bare at rette to fejl:
1) Din betingelse i for-løkken er forkert. Du stopper første gang du
får 0. Du skal stoppe første gang du får -1 (som markerer end of
file).
2) Det er ikke en god idé at konvertere byte til char når du læser en
binær fil. Brug en OutputStream i stedet for en Writer. (Hvad du i
øvrigt vil med en BufferWriter og en PrintWriter ved jeg slet ikke).
<snip kode>
>nogen der evt. kunne skrive et lille kode eksempel, eller linke til et?
Din rettede kode ser sådan ud:
URL image = new URL("
http://guden.dk/test.jpg");
InputStream is = image.openStream();
OutputStream os = new FileOutputStream("C:\\new.jpg");
if (is != null)
{
for (int d = is.read(); d>=0; d=is.read())
{
os.write(d);
}
os.close();
}
Et par advarsler:
1) Det er ikke særligt effektivt at læse og skrive én byte ad gangen.
Overvej at bruge en buffer.
2) Du glemmer at lukke is.
3) Hvis der kommer en exception undervejs er det heller ikke sikkert
du får lukket os.