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.
Etwas, was du in deinen Code einfach nur einfügt und dann läuft wirste wohl auch net finden.
Woran haberts denn? ProgressBar darstellen? Progressbar laufen lassen (nicht von 0 auf 100)? Eine Möglichkeit herauszufinden wie lange dein Programm noch benötigt? ...
Etwas, was du in deinen Code einfach nur einfügt und dann läuft wirste wohl auch net finden.
Woran haberts denn? ProgressBar darstellen? Progressbar laufen lassen (nicht von 0 auf 100)? Eine Möglichkeit herauszufinden wie lange dein Programm noch benötigt? ...
eine gute Frage...
also eine Progressbar erstelle ich ja wie folgt:
Code:
jProgressBar1 = new JProgressBar();
this.getContentPane().add(jProgressBar1);
jProgressBar1.setBounds(445, 11, 60, 30);
Daran sollte es also nicht scheitern.
Wenn man so will ist dann 2. und 3. das problem, auch der Link von Bleiglanz führt mich da leider nicht zum Erfolg:
Code:
public ProgressMonitorInputStream(Component parentComponent,
Object message,
InputStream in)
--> copy( new ProgressMonitorInputStream(null,
"Reading ",
url.openStream()) , new FileOutputStream( fileDest ) ); ??
Wie gesagt, mir ist das ganze System scheinbar nicht verständlich