Avatar billede Slettet bruger
14. februar 2002 - 19:07 Der er 3 kommentarer og
1 løsning

Simpel "hent fil fra anden http server applikation".

Jeg skal bruge et stykke kode, der henter et billede fra en remote http server, og gemmer det lokalt. Billedet det henter er fra et webcam og opdateres ca. hver 10 sekundt. Programmet skal hente det nye billede fra serveren hver 10 sekundt - og gemme det lokalt. Her er, hvad jeg har lavet, og det virker - men det kan ikke være en særlig elegant løsning !

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

public class Fetcher {

    public static void main(String args[]) {
        Engine e = new Engine();
        e.start();
    }
}

class Engine extends Thread {

    public void run() {
            URL url = null;
            URLConnection connection = null;
            InputStream in = null;
            File outputFile = null;
            FileOutputStream out = null;
            int c;
            try {
                outputFile = new File("webcamLokal.jpg");
                url = new URL("http://blablabl.dk/webcam/webcam.jpg");

                while (true) {
                    connection = url.openConnection();
                    out = new FileOutputStream(outputFile);
                    in = connection.getInputStream();
                    while ((c = in.read()) != -1) {
                        out.write(c);
                    }
                  out.close();
                  this.sleep(10000);
                }
            } catch(Exception e) {
                run();
            }
    }
}

Hvordan gøres det mere elegant?
Avatar billede Slettet bruger
14. februar 2002 - 19:19 #1
Kom til at paste en gammel source, her er den aktuelle:

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

public class Fetcher {

    public static void main(String args[]) {
        Engine e = new Engine();
        e.start();
    }
}

class Engine extends Thread {

    public void run() {
            URL url = null;
            URLConnection connection = null;
            InputStream in = null;
            File outputFile = null;
            FileOutputStream out = null;
            int c;
            try {
                outputFile = new File("webcamLokal.jpg");
                out = new FileOutputStream(outputFile);
                while (true) {
                    url = new URL("http://blablabl.dk/webcam/webcam.jpg");
                    connection = url.openConnection();
                    in = connection.getInputStream();
                    while ((c = in.read()) != -1) {
                        out.write(c);
                    }
                  out.close();
                  this.sleep(10000);
                }
            } catch(Exception e) {
                run();
            }
    }
}
Avatar billede disky Nybegynder
14. februar 2002 - 19:50 #2
Hvorfor er den ikke elegant ?

Den ser fin ud.
Avatar billede Slettet bruger
14. februar 2002 - 20:05 #3
Det er da også muligt, at det er fint nok.
Det undrer mig lidt, at jeg er nødt til at have alle:

url = new URL("http://blablabl.dk/webcam/webcam.jpg");
connection = url.openConnection();
in = connection.getInputStream();

i while() løkken. Jeg er ikke vant til at arbejde med de I/O klasser, så derfor er jeg i tvivl om konstruktionen.
Avatar billede Slettet bruger
16. februar 2002 - 00:00 #4
Over and out.
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