先在本地生成一个文件
FileOutputStream fileOutputStream = new FileOutputStream(123.pdf);然后下载下来。同时删除本地文件。
byte[] fileBytes = null;
rep.setContentType("application/pdf;charset=GB2312");
rep.setHeader("Content-Disposition", "attachment;filename=" + newString(FIILNAME.getBytes("GBK"),"ISO-8859-1"));
rep.setHeader("Pragma", "no-cache");
rep.setDateHeader("Expires", 0); OutputStream os = rep.getOutputStream();
os.write(fileBytes);
os.close();
file.delete();怎么把 fileOutputStream  放在OutputStream 中writer后下载啊

解决方案 »

  1.   


    public static void saveToFile(File f, String text, String encode) {
    BufferedWriter bf = null;
    FileOutputStream fos = null;
    OutputStreamWriter osw = null;
    try {
    fos = new FileOutputStream(f);
    osw = new OutputStreamWriter(fos, encode);
    bf = new BufferedWriter(osw);
    bf.write(text);
    bf.flush();
    } catch (Exception e) {
    e.printStackTrace();
    } finally {
    try {
    bf.close();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    return;
    }
      

  2.   

    如果我没猜错的话你是要做个下载rep应该就是HttpServletResponse
    难怪这么简单的问题都没人回答是因为题目的意思很难猜,这个世界靠猜是不行的 呵呵 不废话了“怎么把一个FileOutputStream变成OutputStream啊 ”这是你的问题
    OutputStream是个抽象类 FileOutputStream继承了OutputStream类 详细情况你可以看api文档 你问的问题根本不成立
    但是在java中根据流的类型基本分为2大类:
    一是字节流  类名以Stream结尾  继承了java.io.InputStream 或java.io.OutputStream 抽象类
    二是字符流  类名以Reader或Writer结尾 
    正是因为这些特性所以你可以这样做//在你的代码里是OutputStream os = rep.getOutputStream(); 
    ServletOutputStream sop=response.getOutputStream();
    sop.write(fileBytes);失败可能还有一种原因那就是
    byte[] fileBytes = null; 
    你声明一个byte[]数组为空但是后面的语句中没有为它赋值,当os.write(fileBytes);的时候....
    你应该这样做
    FileOutputStream fileOutputStream = new FileOutputStream(123.pdf); 
    要加上往123.pdf里写数据的代码
    byte[] fileBytes = null; 以后要加上往fileBytes里填充的方法 
      

  3.   


    ServletOutputStream out = res.getOutputStream();//得到httpservletresponse的输出流//调用这个函数
    public static void returnFile(String filename, OutputStream out)
        throws FileNotFoundException, IOException {
    // A FileInputStream is for bytes
    FileInputStream fis = null;
    try {
    fis = new FileInputStream(filename);
    byte[] buf = new byte[4 * 1024];  // 4K buffer
    int bytesRead;
    while ((bytesRead = fis.read(buf)) != -1) {
    out.write(buf, 0, bytesRead);
    }
    }
    finally {
    if (fis != null) fis.close();
    }
    }你试试
      

  4.   

    估计你所需要的就是读取本地文件,然后传送给客户端,是吧!
    看看上边的函数returnFile,应该对你有帮助