package tom;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.RandomAccessFile;
import java.net.HttpURLConnection;
import java.net.URL;
public class DownLoadFile {
/**
* 下载网络文件
* @param surl 要下载文件的URL地址
* @param fileName 保存下载后文件的文件名
* @param filePath 保存的路径
*/
public static void downLoadFile(String surl,String fileName,String filePath)
{
String sURL = surl;
int nStartPos = 0;
int nRead = 0;
String sName = fileName;
String sPath = filePath;
File dir=new File(filePath);
if(!dir.exists())
{
dir.mkdirs();
}
try {
File file=new File(dir,fileName);
if(!file.exists())
{
file.createNewFile();
}
URL url = new URL(sURL);
// 打开连接
HttpURLConnection httpConnection = (HttpURLConnection) url
.openConnection();
// 获得文件长度
long nEndPos = getFileSize(sURL);
RandomAccessFile oSavedFile = new RandomAccessFile(sPath + "\\"
+ sName, "rw");
httpConnection
.setRequestProperty("User-Agent", "Internet Explorer");
String sProperty = "bytes=" + nStartPos + "-";
httpConnection.setRequestProperty("RANGE", sProperty);
InputStream input = httpConnection.getInputStream();
byte[] b = new byte[1024];
// 读取网络文件,写入指定的文件中
while ((nRead = input.read(b, 0, 1024)) > 0 && nStartPos < nEndPos) {
oSavedFile.write(b, 0, nRead);
nStartPos += nRead;
}
httpConnection.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("downLoadFile sucessful !");
}
/**
* 获取文件长度
* @param sURL 下载文件的URL地址
* @return 下载文件的大小
*/
public static long getFileSize(String sURL) {
int nFileLength = -1;
try {
URL url = new URL(sURL);
HttpURLConnection httpConnection = (HttpURLConnection) url
.openConnection();
httpConnection
.setRequestProperty("User-Agent", "Internet Explorer");
int responseCode = httpConnection.getResponseCode();
if (responseCode >= 400) {
System.err.println("Error Code : " + responseCode);
return -2;
}
String sHeader;
for (int i = 1;; i++) {
sHeader = httpConnection.getHeaderFieldKey(i);
if (sHeader != null) {
if (sHeader.equals("Content-Length")) {
nFileLength = Integer.parseInt(httpConnection
.getHeaderField(sHeader));
break;
}
} else
break;
}
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(nFileLength);
return nFileLength;
}
}
测试文件:
package tom;
import tom.DownLoadFile;
public class DownLoadFile1 {
/**
* @param args
*/
public static void main(String[] args) {
DownLoadFile.downLoadFile("http://f.hiphotos.baidu.com/image/pic/item/472309f79052982257d81bc2d5ca7bcb0b46d4c3.jpg",
"beatifulGril.jpg",
"e:\\downloadFile\\");
}
}