美文网首页
非阻塞I/O下载(可以跨服务器的下载)

非阻塞I/O下载(可以跨服务器的下载)

作者: nofantasy | 来源:发表于2017-09-14 16:03 被阅读0次

        前些日子在公司做了一些上传下载的功能,这个非常好使就分享一下。然而一个观众都没有,那就当成自己的日记吧:

/**

* 非阻塞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;

// 下载网络文件

// 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;

}

相关文章

  • 非阻塞I/O下载(可以跨服务器的下载)

    前些日子在公司做了一些上传下载的功能,这个非常好使就分享一下。然而一个观众都没有,那就当成自己的日记吧: ...

  • 如何理解非阻塞I/O(详解)

    node有三大特征:单线程、非阻塞I/O,事件驱动 非阻塞I/O 非阻塞 I/O,也叫异步 I/O,显然对应的就是...

  • Linux 网络编程之 I/O 模型

    I/O 模型大致分为 5 类:同步阻塞 I/O,同步非阻塞 I/O,异步 I/O,I/O 复用,信号驱动。 阻塞 ...

  • 阻塞I/O、非阻塞I/O和I/O多路复用

    看概念:阻塞I/O、非阻塞I/O和I/O多路复用 - skiler - 博客园 图解阻塞io和非阻塞io及多路复用...

  • BIO-NIO-AIO

    BIO (Blocking I/O):同步阻塞I/O模式。 NIO (New I/O):同步非阻塞模式。 AIO ...

  • nodejs是什么

    nodejs是什么 nodejs是js runtime使用事件驱动 和 非阻塞I/O 模型 非阻塞I/O 阻塞:...

  • netty

    I/O 模型 阻塞I/O模型(BIO) 非阻塞I/O模型 I/O复用模型(select/poll;epoll)se...

  • 关于I/O模型的记录

    I/O模型的种类 阻塞式I/O、非阻塞式I/O、I/O复用(select, poll)、信号驱动式I/O(SIGI...

  • Linux5种I/O模型

    Linux的5种I/O模型分别为: 1)阻塞I/O(blocking I/O)2)非阻塞I/O(nonblocki...

  • Unix网络编程-I/O模型

    1. I/O 模型 Unix下可用的5种I/O模型: 阻塞式I/O; 非阻塞式I/O; I/O复用(select ...

网友评论

      本文标题:非阻塞I/O下载(可以跨服务器的下载)

      本文链接:https://www.haomeiwen.com/subject/zaudsxtx.html