zl程序教程

您现在的位置是:首页 >  后端

当前栏目

通过Java NIO 实现文件下载详解编程语言

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