通过Java NIO 实现文件下载详解编程语言
2023-06-13 09:20:28 时间
private void output(HttpServletResponse response, String filePathAndFileName, String mimeType) throws IOException { File file = new File(filePathAndFileName); // set response headers response.setContentType((mimeType != null) ? mimeType : "application/octet-stream"); response.setContentLength((int) file.length()); // read and write file ServletOutputStream op = response.getOutputStream(); // 128 KB buffer int bufferSize = 131072; FileInputStream fileInputStream = new FileInputStream(file); FileChannel fileChannel = fileInputStream.getChannel(); // 6x128 KB = 768KB byte buffer ByteBuffer bb = ByteBuffer.allocateDirect(786432); byte[] barray = new byte[bufferSize]; int nRead, nGet; try { while ((nRead = fileChannel.read(bb)) != -1) { if (nRead == 0) continue; bb.position(0); bb.limit(nRead); while (bb.hasRemaining()) { nGet = Math.min(bb.remaining(), bufferSize); // read bytes from disk bb.get(barray, 0, nGet); // write bytes to output op.write(barray); bb.clear(); } catch (IOException e) { e.printStackTrace(); } finally { bb.clear(); fileChannel.close(); fileInputStream.close(); }
原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/10208.html
cjava相关文章
- java 上传文件接口_Java接口实现文件上传
- java 删除目录下所有文件_Java删除文件、目录及目录下所有文件的方法实例
- java pfx_如何在Java中读取.pfx文件的内容?
- eclipse怎么导入java文件_Eclipse如何导入JAVA工程?如何将项目导入Eclipse中?
- java集合类面试题_Java集合类相关面试题
- java游戏开发入门教程_JAVA制作游戏入门教程
- java 正则表达式语法_JAVA正则表达式语法大全
- java 文件上传到服务器_Java上传文件到服务器端的方法「建议收藏」
- Java学习-如何编译适配java版本的jar包
- 花个几分钟,带你再了解一下Java注解
- 【Java AWT 图形界面编程】设置窗口图标 ( IntelliJ IDEA 的图标资源位置 | 代码实现 | exe4j 设置导出 exe 程序对应的图标资源位置 )
- Java的String类为什么要设成immutable类型
- Java 使用 NIO 方式读文件详解编程语言
- Java异步MySQL:开启数据处理新时代(java异步mysql)
- Java数据持久层框架 MyBatis之API学习六(Mapper XML 文件详解)编程语言
- [Java]读取文件方法大全详解编程语言
- Java编程操作Oracle数据库(java操作oracle)
- 服务器上的文件Java获取Linux服务器文件:简单又高效的操作方法(java获取linux)
- 处理Java实现Redis键值自动过期管理(redisjava过期)
- 时间Java使用Redis实现有效的过期时间处理(redisjava过期)
- Java 8自动更新,Java 7终止公共更新
- 在Java中利用Oracle数据库进行应用开发(java中oracle)
- java文件复制代码片断(java实现文件拷贝)