精华内容
下载资源
问答
  • java文件流
    千次阅读
    2019-06-06 18:12:26

    用java流的形式输出到页面,实现文件下载

        @RequestMapping(value = "/page/file/download")
        @ResponseBody
        public void download(HttpServletRequest request, HttpServletResponse response,String fileName) throws Exception {
        	File file = CSVUtils.createCSVFile("temp"+System.currentTimeMillis()+".csv");
        	try {
            	OutputStream out = response.getOutputStream();
            	byte[] buffer = filewsUtil.download(fileName);
                if (null != buffer && buffer.length > 0) {
    				// 清空response
    				response.reset();
    				// 设置response的Header
    				response.addHeader("Content-Disposition","attachment;filename="+ file.getName());
    				response.addHeader("Content-Length", "" + buffer.length);
    				response.setContentType("application/octet-stream");
    				out.write(buffer);
    				out.flush();
    				out.close();
    			}
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
            	file.delete();
            }
        }
    
    更多相关内容
  • Java文件流

    千次阅读 2020-08-12 19:36:57
    文件流概述 用来读取文件中的内容与将内容写入文件中的工具,是Java中提供好的类。 文件流分类 根据方向 输入(Input)流——读取文件 输出(Output)流——写入文件 根据内容 字节(Byte)流——读写二进制文件 字符...

    文件流概述

    用来读取文件中的内容与将内容写入文件中的工具,是Java中提供好的类。

    文件流分类

    根据方向

    • 输入(Input)流——读取文件
    • 输出(Output)流——写入文件

    根据内容

    • 字节(Byte)流——读写二进制文件
    • 字符(Char)流——读写文本文件

    根据处理方式

    • 节点流——针对文件建立
    • 处理流——针对其他文件流建立

    输入流

    • 输入流是指建立在文件或者其他文件流上用来对目标文件进行读取的文件流
    • 输入流只能对文件进行读取
    • 读取二进制文件使用字节输入流,读取文本文件使用文本输入流(字符输入流)

    字节输入流

    常用字节输入流继承关系常用字节输入流继承关系

    InputStream是接口
    BufferedInputStream是缓冲流,先将大量数据存入缓冲区,再由缓冲区读取,减少了与磁盘的操作次数,大大提高了效率
    DataInputStream可以读取多种类型的数据

    字节输入流主要方法

    • public abstract int read()throws IOException:对文件进行一次读取并返回读取到的字节数(无法获取内容,意义不大)
    • public int read(byte[] b)throws IOException:读取字节文件并将读取的内容存入字节数组中,返回读取到的字节数(不常用,因为未知文件内容大小,无法确定字节数组的长度)
    • public int read(byte[] b,int off,int len)throws IOException:读取len长度的数据,从索引off开始存入byte数组中,len不能超过一次读取最大的字节数(可以通过循环多次读取内容,在每次读取后都对数据进行处理)
    • public void close()throws IOException:关闭字节输入流,释放资源
      文件读写顺序:建立需要读写的文件对象——建立输入输出流——关闭输入输出流
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.io.InputStream;
    
    /***
     * 
     * @author Vbird
     * @date 2020/8/12
     */
    public class Test {
    
    	public static void main(String []args) {
    		
    		/*1.创建文件对象*/
    		File file = new File("d:/python.jpg");
    		/*2.创建字节输入流*/
    		if(file.exists()) {//当file存在时创建输入流
    			InputStream in = null;
    			try {
    				in = new FileInputStream(file);//使用子类FileInputStream建立 二进制输入流 
    				int count = in.read();//读取到的字节数,并不等于文件大小,获取文件大小用.length();
    				byte[] bys = new byte[10];
    				in.read(bys);//将读取的内容存入字节数组中
    				byte[] bys2= new byte[100];
    				in.read(bys2, 0, 10);//从0开始读取10个数据
    				/*利用循环读取全部内容*/
    				while(in.read(bys)!=-1) {//当读取到最后一个字节时往后读取则子节数为-1,内容被读取完
    					System.out.print("\n");
    					for(byte b:bys) {
    					System.out.print(b+" ");
    				}
    				}
    				while(in.read(bys2,0,10)!=-1) {
    					System.out.print("\n");
    					for(byte b:bys2) {
    					System.out.print(b+" ");
    				}
    				}//在未知文件长度时,按情况选择两种方法
    			} catch (IOException e) {//使用IOException可以解决两种异常
    				e.printStackTrace();
    			}finally {
    				/*3.关闭字节输入流,释放资源*/
    				try {
    					in.close();
    				} catch (IOException e) {
    					e.printStackTrace();
    				}
    			}
    		}
    	}
    }
    

    字符输入流

    常用字节输入流继承关系常用字节输入流继承关系

    根据前缀判断各个特性,如FileReader指向文件,StringReader指向字符串等等

    字符输入流主要方法

    • public int read()throws IOException:进行一次读取并返回读取字节数
    • public int read(char[] cbuf)throws IOException:读取字符文件并将内容存入字符数组中
    • public abstract int read(char[] cbuf,int off,int len)throws IOExceptoin:读取len长度的数据,从索引off开始,存入cbuf数组中,len不能超过一次读取最大的字节数
    • public void close()throws IOException:关闭字符输入流
    import java.io.File;
    import java.io.FileReader;
    import java.io.IOException;
    
    /***
     * 
     * @author Vbird
     * @date 2020/8/12
     */
    public class Test {
    
    	public static void main(String []args) {
    		
    		/*创建文件对象*/
    		File file = new File("d:/one.txt");
    		/*创建文件流*/
    		FileReader read = null;
    		if(file.exists()) {
    			try {
    				read = new FileReader(file);
    				int count = read.read();//获取读取一次可以读取的字节数
    				/*获取文件内容*/
    				char[] chs = new char[100];
    				read.read(chs);
    				for(char ch:chs) {
    					System.out.print(ch);
    				}
    				/*利用循环获取全部内容*/
    				char[] chs2 = new char[2];
    				while((count = read.read(chs2, 0, chs2.length))!=-1) {//每次读取数组长度的数据存入数组中 
    					String s = new String(chs2,0,count);//将读取的数据转化为字符串,不能用数组长度作参数因为最后一次读取可能数组未读满
    					System.out.print(s);
    				}
    				
    			} catch (IOException e) {
    				e.printStackTrace();
    			}finally {
    				try {
    					read.close();
    				} catch (IOException e) {
    					e.printStackTrace();
    				}
    			}
    		}
    	}
    }
    

    输出流

    • 输出流是指建立在文件或其他文件流上用来对目标文件进行写入的文件流
    • 输出流只对目标文件进行写入操作
    • 写入二进制文件使用字节输出流,写入文本文件使用字符输出流

    字节输出流

    常用的字节输出流继承关系常用的字节输出流继承关系

    字节输出流主要方法

    • public void write(int b)throws IOException:写入一个整形数
    • public void write(byte[] b)throws IOException:写入字节数组
    • public void write(byte[] b,int off,int len)throws IOException:在字节数组中从off开始取len长度的数据存入文件中
    • public void close()throws IOException:关闭输出流
    		/*创建输出流*/
    		FileOutputStream out = null;
    		try {
    			out = new FileOutputStream("d:/启动.bat");//若没有该文件会自动创建
    			BufferedOutputStream buffer = new BufferedOutputStream(out);//基于out建立缓冲输出流,写入与其余一样
    			String str = "start=d:/one.txt";//批处理,打开one.txt
    			byte []bys = str.getBytes();//将字符串转为字节数组
    			out.write(bys);//写入字节数组
    		} catch (IOException e) {
    			e.printStackTrace();
    		}finally {
    			try {
    				out.close();
    			} catch (IOException e) {
    				e.printStackTrace();
    			}
    		}
    

    常用字符输出流继承结构常用字符输出流继承结构

    字符输出流主要方法

    • public void write(int b)throws IOException:写入整形数b
    • public void write(chars[] b)throwsIOException:写入字符数组
    • public abstract void write(chars[] b,int off,int len)throws IOException:从字符数组off开始,将len长度的字符写入
    • public void write(String str)throws IOException:写入字符串
    • public void close()throws IOException:关闭流
      两中输入输出流都整体相同
    展开全文
  • java 文件流下载pdf

    千次阅读 2020-10-28 14:40:20
    ```java public void downloadPDF(HttpServletResponse res , String pactNo) throws FileNotFoundException { try { String fileName=pactNo+".pdf"; File file = new File(environment.getProperty("JXZM.path...

    下载pdf,话不多说直接代码

    
    ```java
      public void downloadPDF(HttpServletResponse res , String  pactNo) throws FileNotFoundException {
            try {
                String fileName=pactNo+".pdf";
                File file = new File(environment.getProperty("JXZM.path")+pactNo+".pdf");
                BufferedInputStream bis = null;
                OutputStream os = null;
                FileInputStream fileInputStream = null;
                res.setCharacterEncoding("utf-8");
                res.setContentType("application/pdf"); // word格式
                res.setHeader("Content-Disposition", "attachment; filename=" + fileName);
                try {
                    fileInputStream = new FileInputStream(file);
                    byte[] buff = new byte[1024];
                    bis = new BufferedInputStream(fileInputStream);
                    os = res.getOutputStream();
    
                    int i = bis.read(buff);
                    while (i != -1) {
                        os.write(buff, 0, buff.length);
                        i = bis.read(buff);
                        os.flush();
                    }
                    os.flush();
                    os.close();
    //                return SimpleResult.ok("导出成功",os);
                } catch ( IOException e ) {
                    e.printStackTrace();
    //                return SimpleResult.fail("导出失败",null);
                } finally {
                    if (bis != null) {
                        try {
                            bis.close();
                            fileInputStream.close();
                        } catch (IOException e) {
                            e.printStackTrace();
    //                        return SimpleResult.fail("导出失败",null);
                        }
                    }
                }
            }catch (Exception e){
                logger.info("错误信息",e);
    //            return null;
            }
    
    
    
    展开全文
  • java文件流方式下载文件

    万次阅读 2017-05-12 15:23:24
    该方式Java中基本上都通用 这里我使用的是SpringMVC,不过它在这里的唯一用途就是用来获取ServletContext对象,这个对象的用途,下面实例中有说明需要用到两个jar包: commons-fileupload.jar 和 commons-io.jar代码...

    该方式Java中基本上都通用,主要4个步骤,下面的ServletContext对象可以不用,可以根据自己的方式来。
    这里我使用的是SpringMVC,不过它在这里的唯一用途就是用来获取ServletContext对象,这个对象的用途,下面实例中有说明

    需要用到两个jar包: commons-fileupload.jar 和 commons-io.jar

    代码如下:

    import org.springframework.stereotype.Controller;  
    import org.springframework.web.bind.annotation.RequestMapping;  
    import org.springframework.web.context.ServletContextAware;  
    import javax.servlet.ServletContext;  
    import javax.servlet.ServletOutputStream;  
    import javax.servlet.http.HttpServletResponse;  
    import java.io.*;  
    
    @Controller  
    public class FileController implements ServletContextAware{  
    
        //Spring这里是通过实现ServletContextAware接口来注入ServletContext对象  
        private ServletContext servletContext;  
    
        @Override  
        public void setServletContext(ServletContext servletContext) {  
            this.servletContext = servletContext;  
        }
    
    
        @RequestMapping("file/download")  
        public void fileDownload(HttpServletResponse response){  
    
            //获取网站部署路径(通过ServletContext对象),用于确定下载文件位置,从而实现下载  
            String path = servletContext.getRealPath("/");  
    
            //1.设置文件ContentType类型,这样设置,会自动判断下载文件类型  
            response.setContentType("multipart/form-data");  
    
            //2.设置文件头:最后一个参数是设置下载文件名(假如我们叫zms.jpg,这里是设置名称)  
            response.setHeader("Content-Disposition", "attachment;fileName="+"zms.jpg");  
    
            ServletOutputStream out=null;  
            FileInputStream inputStream=null;
    
            //通过文件路径获得File对象(假如此路径中有一个 zms.jpg 文件)  
            File file = new File(path + "download/" + "zms.jpg");  
    
            try {  
               inputStream  = new FileInputStream(file);  
    
                //3.通过response获取ServletOutputStream对象(out)  
                out = response.getOutputStream();  
    
                int b = 0;  
                byte[] buffer = new byte[512];  
                while (b != -1){  
                   b = inputStream.read(buffer); 
                   if(b != -1){
                        out.write(buffer,0,b);//4.写到输出流(out)中  
                   }
    
                } 
    
            } catch (IOException e) {  
                e.printStackTrace();  
            }finally{
                try{
                     if(inputStream!=null){
                        inputStream.close();  
                     }
                     if(out!=null){
                        out.close();  
                        out.flush(); 
                     }
                }catch (IOException e) { 
                     e.printStackTrace();  
                }
    
            }
    
    
        }  
    
    }  

    第二种方式,直接通过response得到输出流

        import java.io.File;
        import java.io.FileInputStream;
        import java.io.IOException;
        import java.io.InputStream;
        import javax.servlet.http.HttpServletRequest;
        import javax.servlet.http.HttpServletResponse;
        import org.apache.log4j.Logger;
        import org.springframework.beans.factory.annotation.Autowired;
        import org.springframework.stereotype.Controller;
        import org.springframework.web.bind.annotation.RequestMapping;
        import org.springframework.web.bind.annotation.RequestMethod;
    
        @RequestMapping(value="tempDownLoad")
        public void tempDownLoad(HttpServletRequest request,HttpServletResponse response){
    
            InputStream in = null;
            try{
                //1.设置文件ContentType类型,这样设置,会自动判断下载文件类型  
                response.setContentType("multipart/form-data");  
                //2.设置文件头:最后一个参数是设置下载文件名
                response.setHeader("Content-Disposition", "attachment;fileName=zms.jpg"); 
    
                //通过文件路径获得File对象(假如此路径中有一个 zms.jpg 文件)  
                File file = new File("E:/template/zms.jpg");  
    
                in = new FileInputStream(file);  
    
                //3.通过response获取ServletOutputStream对象(out)  
                int b = 0;  
                byte[] buffer = new byte[512];  
                while (b != -1){  
                   b = in.read(buffer);
                   if(b != -1){
                        response.getOutputStream().write(buffer,0,b);//4.写到输出流(out)中   
                   }
    
                }  
            } catch (Exception e) {  
            }finally{
                try {
                    if (in != null) {
                        in.close();
                    }
                    response.getOutputStream().flush();
                } catch (IOException e) {
                    e.printStackTrace();
                    logger.error("关闭文件IOException!");
                }
            }
    
        }
    展开全文
  • java文件流的关闭问题

    2017-09-02 09:32:33
    writer和out这两个文件流需要关闭我晓得。可是第一个案例new OutputStreamWriter 这个new出来的流我没有实例化,这样写合理吗,还是说像第二个案例这样关闭三个流。第一种会不会造成流不关闭情况。有人晓得不。
  • java 文件读取

    千次阅读 2021-03-07 08:56:42
    Java语言的IO编程中,读取文件是分两个步骤:1、将文件中的数据转换为,2、读取内部的数据。其中第一个步骤由系统完成,只需要创建对应的对象即可,对象创建完成以后步骤1就完成了,第二个步骤使用输入...
  • java返回文件流

    千次阅读 2022-06-14 15:22:02
    返回文件流
  • java读取图片文件流

    2014-09-29 14:46:39
    java读取本地图片文件获取java读取本地图片文件获取
  • HttpClient Post提交多文件及多个普通参数,已经封装成工具类。 需传入 要请求的url 普通参数map 例 map.put("param1","张三"); 需要传入的文件流map 其中key为文件名 服务端接收无乱码。
  • Java文件流“java.io.IOException: Stream closed”异常解决 初学者在Java的io流操作中往往最容易忘记的就是处理完之后流的关闭,但是好不容易记起来了,却又出现java.io.IOException: Stream closed的异常,现在以...
  • Java实现文件写入——IO

    千次阅读 2021-02-12 14:52:34
    输入输出的重要性:输入和输出功能是Java对程序处理数据能力的提高,Java的形式处理数据。是一组有序的数据序列,根据操作的类型,分为输入和输出。程序从输入读取数据,向输出写入数据。Java是面向...
  • java文件的输入(FileInputStream)和输出(FileOutputStream),使用场景是什么,通过二者实现文件内容的写入和读取
  • Java返回文件流给前端

    千次阅读 2022-03-03 17:11:07
    import java.io.File; import java.io.FileInputStream; @RestController @RequestMapping("/downLoad") @Slf4j public class DemoController { @PostMapping("/file") public static void downLoadFile...
  • Java 文件输出.pdf

    千次阅读 2021-03-17 19:37:09
    Java 文件输出流Java ⽂件输出流Java IO教程 - Java⽂件输出创建输出要写⼊⽂件,我们需要创建⼀个FileOutputStream类的对象,它将表⽰输出。// Create a file output streamString destFile = "test.txt";...
  • java的几种IO读取文件方式

    千次阅读 2021-02-28 10:42:09
    一、超类:字节: InputStream(读入) OutputStream(写出)字符: Reader(字符 读入) Writer (字符写出)二、文件操作字节: FileInputStream ,FileOutputStream字符: FileReader, FileWriter(用法...
  • java 文件流输出pdf格式,url路径(http)及本地路径文件 url路径 @RequestMapping("/outPutUrl") public void outPutUrl(HttpServletRequest request, HttpServletResponse response) throws Exception { String ...
  • java文件流和文件名称转换为文件

    千次阅读 2021-03-01 06:19:45
    private class MultipartFileResource extends InputStreamResource {private String fileName;private InputStream inputStream;public MultipartFileResource(InputStream inputStream, String fileName) {super(i...
  • Java文件流应用:剪切文件

    千次阅读 2017-05-01 15:27:24
    剪切的实际操作是: 第一步,先复制文件到指定位置, 第二步,删除原文件,这样就实现了剪切 与复制文件相比,多了一步删除文件注意:删除文件必须在关闭后,才能删
  • java实现文件流保持到本地的方法

    千次阅读 2021-07-08 18:52:53
    private void savePic(InputStream inputStream, String fileName) { OutputStream os = null; try { String path = "D:\\testFile\\... // 2、保存到临时文件 // 1K的数据缓冲 byte[] bs = new byte[1024]; ...
  • java接受文件流

    千次阅读 2019-08-30 10:01:41
    java 接受文件流 1. 接受响应体: public class BinaryResponse { private Integer statusCode = null; private byte[] result = null; private boolean success = false; private Map<String, String>....
  • Java IO流之文件流

    千次阅读 2017-05-01 14:59:20
    一、文件流分类二、FileInputStream三、FileOutputStream四、FileReader五、FileWriter
  • 本文实例讲述了Java实现文件和base64的相互转换功能。分享给大家供大家参考,具体如下:import java.io.FileInputStream;import java.io.FileOutputStream;import sun.misc.BASE64Decoder;import sun.misc.BASE64...
  • Java io流文件读取和写入

    千次阅读 2020-07-10 17:16:29
    Java io 操作demo类 1.读取操作 /** *@author lxw *@date 2020/6/24 *@desc 获取文件输入,这里读入内存中 *@param [fileName] *@return byte[] **/ public byte[] readPdfFile(String fileName) ...
  • /*** ... * @param url 第三方接口地址 ... * @param multipartFile 文件流 * @return */ public static String sendHttpPostRequest(String url,JSONObject jsonObject, MultipartFile multipartFile) throws Ex
  • Java流处理之转换编码的转换

    千次阅读 2022-04-29 09:12:15
    ‍♂️字符编码和字符集 字符编码 ‍♀️字符集 ⛹编码引出的问题 InputStreamReader类 构造方法 指定编码读取 OutputStreamWriter类 ...‍♂️转换理解图解 ⛷️转换文件编码案例 ‍♂️案例分析 ‍♂️案例实现
  • Java中转换流是个文件流操作中的一个小知识点,主要包含了文件的编码和解码过程。 这里套用别人的图进行一个形象的关于转换流的表达: 这里结合实例给大家进行一些说明,望详细看代码 /*  * 转换流:...
  • 1.有问题的代码 //根据临时的zip压缩包路径,创建zip文件  File zip = new File(zipFilePath);  FileOutputStream fos = null;  ZipOutputStream zos = null;  try {  if (!zip.exists()){  ...
  • * 读取文件流,字符串和文件流互转 * @author luohui * @create 2019/8/6 * @since 1.0.0 */ public class ReadIOUtil { /** * 把文件流转成字符串 * @param is * @return */ public static String ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 889,068
精华内容 355,627
关键字:

java文件流

友情链接: TSP---Copy.zip