通过Java NIO 实现文件下载
发布时间:2020-12-15 00:15:35 所属栏目:Java 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 private void output(HttpServletResponse response,String filePathAndFileName,String mimeType) throws IOException { File file = new File(fileP
以下代码由PHP站长网 52php.cn收集自互联网 现在PHP站长网小编把它分享给大家,仅供参考 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,nGet); // write bytes to output op.write(barray); } bb.clear(); } } catch (IOException e) { e.printStackTrace(); } finally { bb.clear(); fileChannel.close(); fileInputStream.close(); } } 以上内容由PHP站长网【52php.cn】收集整理供大家参考研究 如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |