Avatar billede thomasaarhus Nybegynder
06. december 2004 - 11:30 Der er 4 kommentarer og
1 løsning

Kopier html-fil fra nettet til harddisk

Jeg har brug for at hente et html-dokument ned fra nettet vha. et java program. F.eks.: http://www.sporveje.dk/v04/linie_01/l01mf0_1.html
Filen skal gemmes i samme bibliotek som java programmet som "sporveje.txt".

Vh Thomas
Avatar billede arne_v Ekspert
06. december 2004 - 12:05 #1
prøv:

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

public class HttpGet {
  public static void main(String[] args) {
      try {
        URL url = new URL("http://www.sporveje.dk/v04/linie_01/l01mf0_1.html");
        HttpURLConnection con = (HttpURLConnection)url.openConnection();
        con.connect();
        if(con.getResponseCode() == HttpURLConnection.HTTP_OK) {
            InputStream is = con.getInputStream();
            OutputStream os = new FileOutputStream("sporveje.txt");
            byte[] b = new byte[1000];
            int n;
            while((n = is.read(b)) >= 0) {
              os.write(b,0,n);
            }
            os.close();
            is.close();
        }
        con.disconnect();
      } catch (MalformedURLException e) {
        e.printStackTrace();
      } catch (FileNotFoundException e) {
        e.printStackTrace();
      } catch (IOException e) {
        e.printStackTrace();
      }
  }
}
Avatar billede arne_v Ekspert
06. december 2004 - 12:07 #2
Det er faktisk lidt mere tricky at finde det directory hvor programmet
ligger.

Men prøv og haps getPath fra denne her kode:

import java.util.*;

public class GetPathExt {
    private static String getPath(Class cls) {
        String cn = cls.getName();
        StringTokenizer st = new StringTokenizer(cn,".");
        StringBuffer sb = new StringBuffer("");
        boolean first = true;
        while(st.hasMoreTokens()) {
            if(first) {
                first = false;
            } else {
                sb.append("/");
            }
            sb.append(st.nextToken());
        }
        sb.append(".class");
        String path = GetPathExt.class.getClassLoader().getResource(sb.toString()).getPath();
        int ix = path.indexOf("!");
        if(ix >= 0) {
            path = path.substring(0, ix);
            int ix2 = path.lastIndexOf("/");
            return path.substring(6, ix2 + 1);
        } else {
            int ix2 = path.lastIndexOf("/");
            return path.substring(1, ix2 + 1);
        }
    }
    public static void main(String[] args) {
        System.out.println(GetPathExt.getPath(GetPathExt.class));
    }
}
Avatar billede thomasaarhus Nybegynder
06. december 2004 - 18:21 #3
Jeg har brugt koden til at hente html filen med og det virker fint. Jeg må indrømme at jeg ikke har benyttet getPath da filen faktisk automatisk blev gemt i den mappe jeg ønskede, men jeg vil sikkert bruge det på et senere tidspunkt, når de væsentlige funktioner i programmet er på plads. Tak for det.

Lægger du et svar?
Avatar billede arne_v Ekspert
06. december 2004 - 18:45 #4
kommer her
Avatar billede arne_v Ekspert
06. december 2004 - 18:46 #5
getPath er kun nødvendigt hvis man står i et andet directory end der hvor class/jar
filen ligger.
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