import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
import java.net.URLConnection;
public class Downloader
implements java.lang.Runnable
{
public Downloader(java.net.URL url, java.io.File destination)
{
length = -1;
progress = 0;
thread = new Thread(this);
stop = true;
this.url = url;
file = destination;
}
public void run()
{
java.io.InputStream in = null;
java.io.OutputStream out = null;
try
{
java.net.URLConnection connection = url.openConnection();
in = connection.getInputStream();
out = new FileOutputStream(file);
byte data[] = new byte[4096];
length = connection.getContentLength();
int total;
while (!stop && (total = in.read(data)) > 0)
{
out.write(data, 0, total);
progress += total;
}
}
catch (java.lang.Exception e)
{
e.printStackTrace();
stop = true;
}
try
{
in.close();
out.close();
}
catch (java.lang.Exception e)
{
e.printStackTrace();
}
if (stop)
try
{
if (file.exists())
file.delete();
}
catch (java.lang.Exception e)
{
e.printStackTrace();
}
}
public void start()
{
stop = false;
thread.start();
}
public void join()
{
try
{
thread.join();
}
catch (java.lang.InterruptedException e)
{
e.printStackTrace();
}
}
public void cancel()
{
stop = true;
}
public int getLength()
{
return length;
}
public int getProgress()
{
return progress;
}
public int getProgressInPercent()
{
return (int)(((double)progress / (double)length) * 100D);
}
public boolean completed()
{
return !thread.isAlive() && progress == length;
}
public boolean stopped()
{
return !thread.isAlive() && stop;
}
private java.net.URL url;
private java.io.File file;
private int length;
private int progress;
private java.lang.Thread thread;
private boolean stop;
}
Wednesday, October 15, 2008
How to write a file downloader in java
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment