Avatar billede nielsbrinch Nybegynder
22. februar 2002 - 16:03 Der er 6 kommentarer og
1 løsning

Download og gem billede

Jeg har forsøgt at downloade et billede, og gemme det på min harddisk - mine anstrengelser efter hjælp fra java.sun.com ser sådan ud:

URL dlpic = new URL("http://www.tralala.dk/etbillede.gif");
      URLConnection urlc = dlpic.openConnection();
      InputStream input = urlc.getInputStream();
      InputStreamReader reader = new InputStreamReader(input);

      File outFile = new File("test.gif");
      FileOutputStream output = new FileOutputStream(outFile);

      byte[] byteArray;
      int i;
      while ((i = reader.read()) != -1)
      {
        output.write(i);
      }

Den laver da også et billede med et eller andet i, men det ser skrupforkert ud. Hvad skal jeg ændre?
Avatar billede carstenknudsen Nybegynder
22. februar 2002 - 16:46 #1
InputStream input = ...;
OutputStream output = ...;
byte[] buffer = new byte[ 1024 ];
int bytes_read;
while ( ( bytes_read = input.read( buffer ) ) != 0 ) {
output.write(buffer,0,bytes_read);
}
PS binære filer læses som bytes, brug
derfor ikke en Reader, den er karakterbaseret.
Avatar billede nielsbrinch Nybegynder
22. februar 2002 - 18:18 #2
Hvad skal der f.eks. stå ved OutputStream output = ...; ?
Avatar billede nielsbrinch Nybegynder
22. februar 2002 - 18:20 #3
Den siger nemlig at OutputStream er abstrakt og ikke kan laves instanser af, og det er jo rigtigt ...
Avatar billede carstenknudsen Nybegynder
22. februar 2002 - 18:25 #4
Du kan gøre som du selv har gjort ovenfor:
OutputStream output = new FileOutputStream("filnavn");
Avatar billede nielsbrinch Nybegynder
22. februar 2002 - 18:42 #5
Ja ok, fandt også ud af at bruge:
FileOutputStream output = new FileOutputStream("filnavn");

Det der driller lige nu er at finde den rigtige mængde pladser i det byte-array - for få og den ryger IndexOutOfBounds, for mange og den går OutOfMemory - og der ser ikke ud til at være nogen gylden middelvej...

... det undrer mig ærligt talt, for det er billede på omtrent 8 kb...
Avatar billede carstenknudsen Nybegynder
22. februar 2002 - 22:59 #6
Ja, der er en lille fejl, der skal stå
(bytes_read = ...) > 0
idet der returneres -1 hvis ikke der læses
noget. Så skulle den være iorden.
Avatar billede nielsbrinch Nybegynder
22. februar 2002 - 23:02 #7
Yes da! Der var den! Det er fantastisk som du hjælper mig overalt, Carsten!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester