G
Guest
Gast
Hallo
Ich möchte in meinem Programm (bzw tue es) eine Datei aus dem Internet laden und lokal auf der Festplatte speichern. Naturgemäß dauert es ja, Dateien aus dem inet zu laden - in Folge dessen möchte ich einen Fortschrittsbalken während des Ladevorgangs anzeigen.
Den FAQ-Beitrag (http://www.java-forum.org/de/viewtopic.php?t=8101) habe ich gelesen, auch die Suche habe ich bemüht und dennoch leider nichts direkt anwendbares gefunden (auch die API mit dem ProgressMonitor ist mir da nicht ganz klar )
Mir ist selbstverständlich bekannt das Probleme gemeinsam gelöst werden sollte - nur hab ich scheinbar keinerlei Idee wie ich den Teil abwandeln muss damit ich eine Progressbar habe.
Anmerkung: Es gibt im momentanen Status keinerlei GUI - von daher schwebt mir ein Dialog vor, der sich vor eine später entstehende GUI schiebt.
Ich möchte in meinem Programm (bzw tue es) eine Datei aus dem Internet laden und lokal auf der Festplatte speichern. Naturgemäß dauert es ja, Dateien aus dem inet zu laden - in Folge dessen möchte ich einen Fortschrittsbalken während des Ladevorgangs anzeigen.
Den FAQ-Beitrag (http://www.java-forum.org/de/viewtopic.php?t=8101) habe ich gelesen, auch die Suche habe ich bemüht und dennoch leider nichts direkt anwendbares gefunden (auch die API mit dem ProgressMonitor ist mir da nicht ganz klar )
Mir ist selbstverständlich bekannt das Probleme gemeinsam gelöst werden sollte - nur hab ich scheinbar keinerlei Idee wie ich den Teil abwandeln muss damit ich eine Progressbar habe.
Code:
import java.io.*;
import java.net.*;
public class FileCopy
{
public void http( String urlSrc, String fileDest )
{
try
{
URL url = new URL( urlSrc );
copy( url.openStream() , new FileOutputStream( fileDest ) );
}
catch( IOException e ) {
System.err.println( e );
}
}
public void file( String src, String dest )
{
try
{
copy( new FileInputStream( src ), new FileOutputStream( dest ) );
}
catch( IOException e ) {
System.err.println( e );
}
}
private void copy( InputStream fis, OutputStream fos )
{
try
{
byte buffer[] = new byte[0xffff];
int nbytes;
while ( (nbytes = fis.read(buffer)) != -1)
fos.write( buffer, 0, nbytes );
}
catch( IOException e ) {
System.err.println( e );
}
finally {
if ( fis != null )
try {
fis.close();
} catch ( IOException e ) {}
try {
if ( fos != null )
fos.close();
} catch ( IOException e ) {}
}
}
Anmerkung: Es gibt im momentanen Status keinerlei GUI - von daher schwebt mir ein Dialog vor, der sich vor eine später entstehende GUI schiebt.