Java中的IO流

风格不统一 提交于 2020-03-07 10:55:03

一、分类

java中的流分为字节流和字符流,按照流向也可以分为输入流和输出流。

 

字符流和字节流的使用范围:字节流一般用来处理图像,视频,以及PPT,Word类型的文件。字符流一般用于处理纯文本类型的文件,如TXT文件等,字节流可以用来处理纯文本文件,但是字符流不能用于处理图像视频等非文本类型的文件。

 

处理流BufferedReader,BufferedWriter,BufferedInputStream,BufferedOutputsStream,都要包上一层节点流。也就是说处理流是在节点流的基础之上进行的,带有Buffered的流又称为缓冲流,缓冲流处理文件的输入输出的速度是最快的。所以一般缓冲流的使用比较多。

 

 


package com.javaBase.IO;import java.io.*;/** * 〈一句话功能简述〉; * 〈功能详细描述〉 * * @author jxx * @see [相关类/方法](可选) * @since [产品/模块版本] (可选) */public class BufferFileCopy {    public static void main(String[] args){        File src = new File("1.txt");        File dest = new File("2.txt");        fileCopy2(src,dest);    }    /**     * 使用字符流文件复制     * @param src     * @param dest     */    public static void fileCopy1(File src, File dest) {        FileReader fr = null;        FileWriter fw = null;        BufferedReader br = null;        BufferedWriter bw = null;        try {            fr = new FileReader(src);            fw = new FileWriter(dest);            br = new BufferedReader(fr);            bw = new BufferedWriter(fw);            String str = null;            while ((str = br.readLine()) != null) {                bw.write(str);                bw.newLine();                bw.flush();            }        } catch (Exception e) {            e.printStackTrace();        } finally {            try {                if(br != null) br.close();                if(bw != null) bw.close();                if(fw != null) fw.close();                if(fr != null) fr.close();            } catch (IOException e) {                e.printStackTrace();            }        }    }    /**     * 使用字节流文件复制     * @param src     * @param dest     */    public static void fileCopy2(File src, File dest) {        FileInputStream fis = null;        FileOutputStream fos = null;        BufferedInputStream bis = null;        BufferedOutputStream bos = null;        try {            fis = new FileInputStream(src);            fos = new FileOutputStream(dest);            bis = new BufferedInputStream(fis);            bos = new BufferedOutputStream(fos);            int len;            byte[] b = new byte[1024];            while((len = bis.read(b)) != -1) {                //bis.read(b)  将读取的字节写入数组,返回写入的长度(len),最长写入1024个字节                bos.write(b,0,len);                bos.flush();            }        } catch (Exception e) {            e.printStackTrace();        } finally {            try {                if(fis != null) fis.close();                if(fos != null) fos.close();                if(bis != null) bis.close();                if(bos != null) bos.close();            } catch (IOException e) {                e.printStackTrace() ;            }        }    }}
 
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!