Avatar billede madsmm Nybegynder
14. februar 2002 - 12:17 Der er 8 kommentarer og
1 løsning

Hent fil via url og skriv fil på disk

Hejsa,

hvordan opnås titel ?

Pft.

Mads
www.startout.dk
Avatar billede erikjacobsen Ekspert
14. februar 2002 - 12:20 #1
Hvis du lige sørger for lidt af benarbejdet, så har du en start her:

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



class FetchHttp {

    public static void main(String[] args) throws Exception    {

        System.out.println("Hello World!");

        Socket clientSocket = new Socket("www.eksperten.dk",80);

        DataOutputStream outToServer = new DataOutputStream( clientSocket.getOutputStream());

        BufferedReader inFromServer = new BufferedReader( new InputStreamReader( clientSocket.getInputStream()));

        outToServer.writeBytes("GET / HTTP/1.1"+'\n');
        outToServer.writeBytes("Host: www.eksperten.dk"+'\n');
        outToServer.writeBytes("Connection: close"+'\n');    // ellers stopper whileløkken ikke
        outToServer.writeByte('\n');

        String s = inFromServer.readLine();
        while (s!=null) {
          System.out.println("FROM SERVER: "+s);
          s = inFromServer.readLine();
        }
  }
}
Avatar billede madsmm Nybegynder
14. februar 2002 - 12:28 #2
men kan det ikke lade sig gøre uden at skulle læse filen linie for linie.... for det er de filer jeg skal hente ret store til!
Avatar billede madsmm Nybegynder
14. februar 2002 - 12:29 #3
det skal gå så hurtigt som muligt
Avatar billede erikjacobsen Ekspert
14. februar 2002 - 12:35 #4
Så dropper du bare BufferedReader, så skulle der være metoder
til at læse "bínære" filer. Du skal bare skippe headeren, dvs.
lede efter to konsekutive linieskift.

Hurtigt? Jeg har ikke tid til at lave det for dig.
Avatar billede madsmm Nybegynder
14. februar 2002 - 12:40 #5
jeg mener den skal læse og skrive filen så hurtigt som muligt, ikke at du skal svare så hurtigt som muligt
Avatar billede erikjacobsen Ekspert
14. februar 2002 - 12:47 #6
Det kan være du bør bruge HttpURLConnection-klassen, til
at lave det meste for dig. Min eksempel tog udgangspunkt
i almindelig sockets.
Avatar billede erikjacobsen Ekspert
15. februar 2002 - 15:02 #7
Jeg fandt et andet eksempel, jeg havde liggende. Det gør alt
arbejdet for dig, men om det er hurtigt nok for dig, se, det ved
jeg ikke. Prøv:

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("sofie5.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 madsmm Nybegynder
15. februar 2002 - 15:04 #8
det ser jo glimrende ud... det var sådan noget jeg søgte...

tak... jeg kigger lidt på det!
Avatar billede madsmm Nybegynder
15. februar 2002 - 15:04 #9
og.. hun ser godt nok glad ud :-)
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