? ? ? ? 前些日子在公司做了一些上傳下載的功能衷咽,這個非常好使就分享一下。然而一個觀眾都沒有飘诗,那就當成自己的日記吧:
/**
* 非阻塞I/O下載
*
* @return boolean 是否成功
* @throws ParseException
*/
public boolean nioDownload(String preparePath, String realFileName, String saveName)
throws ParseException {
// httpUrl這個是下載地址
String httpUrl = preparePath;
String ext = realFileName.substring(realFileName.lastIndexOf("."), realFileName.length());
String workDirectory = getSystemRealDirectory() + getSystemWorkDirectory() + Global.getConfig("htword.accDir")
+ "/" + saveName + ext;
System.out.println("目標文件夾:" + workDirectory);
boolean flag = false;
// 下載網(wǎng)絡文件
// Long startTime = System.nanoTime();
ReadableByteChannel rbc = null;
FileOutputStream fos = null;
try {
URL website = new URL(httpUrl);
System.out.println("下載地址:" + httpUrl);
rbc = Channels.newChannel(website.openStream());
fos = new FileOutputStream(workDirectory);//這個是最終下載到的位置
fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
flag = true;
} catch (IOException e) {
flag = false;
e.printStackTrace();
} finally {
try {
if (fos != null) {
fos.close();
}
} catch (IOException e) {
e.printStackTrace();
}
try {
if (rbc != null) {
rbc.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
// Long elapsedTime = System.nanoTime() - startTime;
// if((elapsedTime / 1000000000.0)>3)
return flag;
}