先在本地生成一个文件
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后下载啊
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后下载啊
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;
}
难怪这么简单的问题都没人回答是因为题目的意思很难猜,这个世界靠猜是不行的 呵呵 不废话了“怎么把一个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里填充的方法
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();
}
}你试试
看看上边的函数returnFile,应该对你有帮助