Avatar billede geko Nybegynder
04. marts 2002 - 22:34 Der er 6 kommentarer og
1 løsning

Kopiering af fil

Jeg har følgende kode til at kopiere en fil fra en webserver til en lokal fil, men for det første virker den ikke, for det andet burde der være en hurtige måde.
Det drejer sig om gif-billeder

{
  try{
  FileReader inFile = new FileReader("http://g2k.dk/top1.jpg");
  } catch(IOException io){return false;};
  try{
  FileWriter outFile = new FileWriter("top.jpg");
  } catch(IOException io){return false;}
  int data = 0;

  while(data != -1){
  try{
    data = inFile.read();
  } catch(IOException io){return false;};
  if(data != -1){
    try{
    outFile.write(data);
    } catch(IOException io){return false;};
  }
  }

  return true; 
}

compileren gider ikke engang, well, compile. jeg får erroren


cannot resolve symbol
symbol  : variable inFile
location: class doonesbury
    data = inFile.read();
          ^
cannot resolve symbol
symbol  : variable outFile
location: class doonesbury
    outFile.write(data);
    ^
2 errors

er der en lettere måde? og hvis ikke, hvad er fejlen i min kode?

-geko
Avatar billede erikjacobsen Ekspert
04. marts 2002 - 22:38 #1
Den grundlæggende fejl men din inFile er at du har erklæret
den mellem et par {...} så den ikke er kendt udenfor.

Erklær den udenfor, og initialiser den indenfor.
Avatar billede erikjacobsen Ekspert
04. marts 2002 - 22:39 #2
Men ellers brug denne kode:

import java.net.*;
import java.io.*;
import java.lang.*;

class Fetch3 {
  public static void main(String[] args) throws Exception {
    final int MAX = 1024;
    InputStream in = new URL("http://www.sofie.jacobsen.org/sofie.jpg").openConnection().getInputStream();
    FileOutputStream out = new FileOutputStream(new File("out.jpg"));
    int count;
    byte buf[] = new byte[MAX];
    while ((count = in.read(buf,0,MAX)) != -1) {
      out.write(buf,0,count);
    }
    out.close();
    in.close();
  }
}
Avatar billede geko Nybegynder
04. marts 2002 - 22:43 #3
hvordan initer jeg den så?
findes der en smartere måde at kopiere på?
Avatar billede geko Nybegynder
04. marts 2002 - 22:45 #4
ok, takker :)
Avatar billede erikjacobsen Ekspert
04. marts 2002 - 22:57 #5
Lige for at vende tilbage til det rent Java-tekniske i dit
spørgsmål, så skriver du

  try{
    FileReader inFile = new FileReader("http://g2k.dk/top1.jpg");
  } catch(IOException io){return false;};

men burde skrive

  FileReader inFile;
  try{
    inFile = new FileReader("http://g2k.dk/top1.jpg");
  } catch(IOException io){return false;};

Kan du se forskellen. Det vil ikke virke som du ønsker med
at læse den jpg fil, men det er så en anden sag.
Avatar billede erikjacobsen Ekspert
04. marts 2002 - 22:59 #6
PS: Koden i Fetch3 er utrolig grim i den forstand at den ikke
reagerer fornuftigt på exceptions - men det har du måske
opdaget :)
Avatar billede geko Nybegynder
11. marts 2002 - 19:45 #7
jeps, har opdaget det :) men ellers virker det fint
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