package org.frameworkset.util;
import java.io.File;
import java.io.IOException;
import java.text.DecimalFormat;
import org.frameworkset.util.io.AbstractResource;
import org.frameworkset.util.io.ResourceHandleListener;
import org.frameworkset.util.io.UrlResource;
public class URLResourceTest {
public URLResourceTest() {
// TODO Auto-generated constructor stub
}
static class InerRunnable extends Thread{
boolean end;
boolean first = true;
UrlResource url;
long oldsavesize;
String oldput ;
private DecimalFormat formater = new DecimalFormat("#.##%");
public InerRunnable(UrlResource url)
{
this.url= url;
}
@Override
public void run() {
do
{
if(end)
break;
try {
if(first)
{
System.out.print("文件下载开始:"+url.getURL() + ",下载进度:");
first = false;
}
else
{
long newsize = url.getSavesize();
if(oldsavesize != newsize)
{
oldsavesize = newsize;
if(oldput == null)
{
float rate = (float) (newsize*1.0 / url.getTotalsize());
oldput = newsize+"/"+url.getTotalsize()+","+formater.format(rate);
System.out.print(oldput);
}
else
{
StringBuilder builder = new StringBuilder();
for(int i = 0 ; i < oldput.length(); i ++)
builder.append("\b");
float rate = (float) (newsize*1.0 / url.getTotalsize());
builder.append(newsize+"/"+url.getTotalsize()+",完成百分比:"+formater.format(rate));
System.out.print(builder);
oldput = newsize+"/"+url.getTotalsize();
}
}
}
Thread.sleep(100);
} catch (IOException e) {
end = true;
break;
} catch (InterruptedException e) {
break;
}
}while(true);
}
public void refreshprocess()
{
// synchronized(this)
// {
// this.notifyAll();
// }
}
public void end()
{
this.end = true;
synchronized(this)
{
this.notifyAll();
}
}
}
public static void main(String[] args) throws IOException
{
final UrlResource url = new UrlResource("http://nj02.poms.baidupcs.com/file/cecf4f52d2ce2b35f36923758a6b2010?bkt=p2-nj-384&fid=4245631570-250528-422706410393673&time=1438604378&sign=FDTAXGERLBH-DCb740ccc5511e5e8fedcff06b081203-kVmi90LWn7i%2Fr8gAznNM1ctC2%2BI%3D&to=n2b&fm=Nan,B,G,nc&sta_dx=200&sta_cs=0&sta_ft=war&sta_ct=0&fm2=Nanjing02,B,G,nc&newver=1&newfm=1&secfm=1&flow_ver=3&pkey=000070aa5f610585259d46966ce42359d63d&sl=83361871&expires=8h&rt=sh&r=592517045&mlogid=2789062078&vuk=4245631570&vbdid=1671589608&fin=bboss.war&fn=bboss.war&slt=pm&uta=0&rtype=1&iv=0&isw=0");
url.open();
final InerRunnable run = new InerRunnable(url);
url.savetofile(new File("d:/",url.getFilename()),new ResourceHandleListener<AbstractResource>() {
@Override
public void startEvent(AbstractResource resource,File dest) {
run.start();
}
@Override
public void handleDataEvent(AbstractResource resource,File dest) {
run.refreshprocess();
}
@Override
public void endEvent(AbstractResource resource,File dest) {
run.end();
}
});
}
}