首页 > 编程知识 正文

java数据流下载文件(java将流生成文件)

时间:2023-12-02 21:07:31 阅读:311487 作者:YMHP

本文目录一览:

  • 1、java编程:我在做一个上传文件的下载,下载方法返回的是InputStream类型,这样的话如果文件存在,点击
  • 2、java数据库blob字段的下载(读取)
  • 3、用java程序来做限速,下载文件的代码修改
  • 4、java不在磁盘创建文件,直接返回流给用户下载
  • 5、java下载功能实现
  • 6、求问Java文件下载的几种方式

java编程:我在做一个上传文件的下载,下载方法返回的是InputStream类型,这样的话如果文件存在,点击

无论是servlet还是springmvc,一般的做法是先用一个servlet或method处理数据,如果正常才会跳转到下载用的servlet或method。 如果不正常,直接转错误提示画面就好了。

java数据库blob字段的下载(读取)

这是我以前写的代码,放在action里。图片在pojo类中对应为byte[]类型,clxxb是一个pojo类,clxxb.getClpic()得到图片对应的字节数组byte[]。其实输出文件就是输出一个字节流。希望对你有帮助。

InputStream input=clxxb.getClpic().getBinaryStream();

byte[] buffer=new byte[input.available()];

ServletOutputStream out=response.getOutputStream();

int length=0;

while((length=input.read(buffer))!=-1){

out.write(buffer,0,length);

}

out.flush();

out.close();

用java程序来做限速,下载文件的代码修改

用java程序来做限速,方向就有问题,如果大并发量,都要控制速度你程序早就挂了。应该用应用服务器(我想你用的tomcat吧)+http服务器控制,这里用apache就可以了。用apache来做限速才是正确的,用程序代码几乎是没法限速,http 协议是无状态的协议。

当然你一定要做, 那就是写一定数量流,拿这个数据流的大小与你限速的平均量比,如果超过了就程序暂停一会。(这样设计很不合理,但可以达到你的要求)

还有两个,快了

java不在磁盘创建文件,直接返回流给用户下载

没懂你的意思,用户要下载的东西是什么?不是在磁盘上的东西么?还是下载的是程序自己生成的数据?如果是程序自己生成的数据,那就更简单了呀~建议用java.nio来做,先生成把要传的数据写入缓冲区,再将缓冲区的数据写入通道.我还没懂你的提问是什么意思?所以没办法给你写例子,我发一段考贝文件的例子给你

import java.io.FileNotFoundException;

import java.io.IOException;

import java.io.RandomAccessFile;

import java.nio.ByteBuffer;

import java.nio.channels.FileChannel;

public class CopyFile {

public static void main(String[] args) {

ByteBuffer bb=null;

try {

// FileOutputStream fileOut=new FileOutputStream("f:\1.txt");

// FileInputStream fileIn=new FileInputStream("f:\2.txt");

RandomAccessFile raf=new RandomAccessFile("f://1.txt","rw");

RandomAccessFile rafo=new RandomAccessFile("f://2.txt","rw");

//获得写入和读取通道

FileChannel foc=raf.getChannel();

FileChannel fic=rafo.getChannel();

//分配缓冲区大小

bb=ByteBuffer.allocate(1024);

//将数据读入缓冲区

foc.read(bb);

bb.put("还可以加入数据".getBytes());

//反转数据,反转以后,不能再放数据

bb.flip();

fic.write(bb);

} catch (Exception e) {

}finally{

bb.clear();

}

}

}

java下载功能实现

楼主得在后台的控制器中用reponse的输出流转化一下,我给你个例子。

InputStream fis = new BufferedInputStream(new FileInputStream(filePath));byte[] buffer = new byte[fis.available()];fis.read(buffer);fis.close();response.reset();response.addHeader("Content-Disposition", "attachment;filename=" + new String(fileName.getBytes("gbk"),"ISO-8859-1"));response.addHeader("Content-Length", "" + excelFile.length());OutputStream toClient = new BufferedOutputStream(response.getOutputStream());response.setContentType("application/octet-stream");toClient.write(buffer);toClient.flush();toClient.close();

求采纳为满意回答。

求问Java文件下载的几种方式

InputStream fis = new BufferedInputStream(new FileInputStream(path));byte[] buffer = new byte[fis.available()];fis.read(buffer);fis.close();// 清空responseresponse.reset();// 设置response的Headerresponse.addHeader("Content-Disposition", "attachment;filename=" + new String(filename.getBytes()));response.addHeader("Content-Length", "" + file.length());OutputStream toClient = new BufferedOutputStream(response.getOutputStream());response.setContentType("application/octet-stream");toClient.write(buffer);toClient.flush();toClient.close();} catch (IOException ex) {ex.printStackTrace();}return response;}public void downloadLocal(HttpServletResponse response) throws FileNotFoundException {// 下载本地文件String fileName = "Operator.doc".toString(); // 文件的默认保存名// 读到流中InputStream inStream = new FileInputStream("c:/Operator.doc");// 文件的存放路径// 设置输出的格式response.reset();response.setContentType("bin");response.addHeader("Content-Disposition", "attachment; filename="" + fileName + """);// 循环取出流中的数据byte[] b = new byte[100];int len;try {while ((len = inStream.read(b)) 0)response.getOutputStream().write(b, 0, len);inStream.close();} catch (IOException e) {e.printStackTrace();}}public void downloadNet(HttpServletResponse response) throws MalformedURLException {// 下载网络文件int bytesum = 0;int byteread = 0;URL url = new URL("windine.blogdriver.com/logo.gif");try {URLConnection conn = url.openConnection();InputStream inStream = conn.getInputStream();FileOutputStream fs = new FileOutputStream("c:/abc.gif");byte[] buffer = new byte[1204];int length;while ((byteread = inStream.read(buffer)) != -1) {bytesum += byteread;System.out.println(bytesum);fs.write(buffer, 0, byteread);}} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}} //支持在线打开文件的一种方式public void downLoad(String filePath, HttpServletResponse response, boolean isOnLine) throws Exception {File f = new File(filePath);if (!f.exists()) {response.sendError(404, "File not found!");return;}BufferedInputStream br = new BufferedInputStream(new FileInputStream(f));byte[] buf = new byte[1024];int len = 0;response.reset(); // 非常重要if (isOnLine) { // 在线打开方式URL u = new URL("" + filePath);response.setContentType(u.openConnection().getContentType());response.setHeader("Content-Disposition", "inline; filename=" + f.getName());// 文件名应该编码成UTF-8} else { // 纯下载方式response.setContentType("application/x-msdownload");response.setHeader("Content-Disposition", "attachment; filename=" + f.getName());}OutputStream out = response.getOutputStream();while ((len = br.read(buf)) 0)out.write(buf, 0, len);br.close();out.close();}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。