我刚学java不久,写了这个程序,小试身手各位有什么改进的地方,请赐教,
import java.net.*;
import java.io.*;
import java.lang.*;
public class down {
public static void main(String[] args) throws Exception {
if(args.length==0){
System.out.println("Usage: down <url>");
System.exit(1);
}
URL yahoo = new URL(args[0]);
String name = args[0].substring(args[0].lastIndexOf("/")+1);
HttpURLConnection connection = (HttpURLConnection)yahoo.openConnection(); ;
File writeF = new File(name);
RandomAccessFile file=new RandomAccessFile(writeF,"rw");
byte[] b = new byte[1024];
int nRead;
long down_length;
if(writeF.exists()){
down_length = writeF.length();
file.seek(down_length);
}else{
down_length = 0;
}
connection.setRequestProperty("User-Agent","NetFox");
connection.setRequestProperty("RANGE","bytes="+down_length+"-");
DataInputStream in = new DataInputStream(connection.getInputStream());
String strLength = connection.getHeaderField("Content-Length");
long length = Long.parseLong(strLength);
System.out.println(name +" length: "+strLength);
if(connection.getHeaderField("Content-Range") != null )
System.out.println("Download :"+connection.getHeaderField("Content-Range"));
int down=0;
int flag =0;
System.out.print(down_length/1024+"K\t->");
while ((nRead=in.read(b,0,b.length)) > 0){
file.write(b,0,nRead);
down = down +nRead;
if(down >= 1024){
down = down -1024;
flag++;
System.out.print(".");
if(flag%10 == 0) System.out.print(" ");
if(flag%50 == 0) {
down_length = down_length+1024*50;
int per = (int)(((double)down_length/(double)length)*100);
System.out.println("["+per+"%]");
System.out.print(down_length/1024+"K\t->");
}
}
//in.flush();
}
System.out.println("\nFinished!");
in.close();
file.close();
}
}
凡是有该标志的文章,都是该blog博主Caoer(草儿)原创,凡是索引、收藏
、转载请注明来处和原文作者。非常感谢。