IO流的使用方法

目录

1、字节流复制方法

2、字节缓冲流复制方法

3、字节缓冲流编码问题

4、字符流写数据

5、字符流读数据

6、字符流复制方法

7、字符流的便捷类

8、字符缓冲流使用

9、字符缓冲流复制方法

10、字符缓冲流特有功能

11、字符缓冲流特有功能复制方法


1、字节流复制方法

        //根据数据源创建字节流对象
        FileInputStream fis = new FileInputStream("");
        //根据目的地创建字符缓冲输出流对象
        FileOutputStream fos = new FileOutputStream("");

        //一个字节复制
        int by;
        while ((by=fis.read())!=-1){
            fos.write(by);
        }

        //一个字节数组复制
        byte[] bys = new byte[1024];
        int len;
        while ((len = fis.read(bys))!=-1){
            fos.write(bys);
        }

        //释放资源
        fis.close();
        fos.close();

2、字节缓冲流复制方法

     //根据数据源创建字节缓冲输入流对象
     BufferedInputStream bis = new BufferedInputStream(new FileInputStream());
     //根据目的地创建字节缓冲输出流对象
     BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream());


        //一个字节复制方法
        int by;
        while ((by = bis.read()) != -1){
            bos.write(by);
        }

        //一个字节数组复制方法
        byte[] bys = new byte[1024];
        int len;
        while ((len=bis.read(bys))!=-1){
            bos.write(bys,0,len);
        }

        //释放资源
        bis.close();
        bos.close();

3、字节缓冲流编码问题

//用什么编码就用什么解码,否则乱码
        //默认编码utf-8
        OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(""),"GBK");
        osw.write("中国");
        osw.close();

        InputStreamReader isr = new InputStreamReader(new FileInputStream(""),"GBK");
        //一次读取一个字符数据
        int ch;
        while((ch=isr.read())!=-1){
            System.out.print((char)ch);
        }
        isr.close();

4、字符流写数据


        OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(""));

        //写一个字符
        osw.write(97);
        //刷新流,不刷新数据写不进
        osw.flush();

        //写入一个字符数组
        char[] chs={'a','b','c','d','e'};
        osw.write(chs);

        //写入字符数组的一部分
        osw.write(chs,0, chs.length);
        osw.write(chs,1, 3);

        //写一个字符串
        osw.write("abcde",0,"abcde".length());

5、字符流读数据

        //字符流读数据
        InputStreamReader isr = new InputStreamReader(new FileInputStream(""));

        //一次读一个字符数据
        int ch;
        while((ch=isr.read())!=-1){
            System.out.print((char)ch);
        }
        isr.close();

        //一次读一个字符数组数据
        char[] chs = new char[1024];
        int len;
        while((len=isr.read(chs))!=-1){
            System.out.println(new String(chs,0,len));
        }
        isr.close();

6、字符流复制方法

        //根据数据源创建字符输入流对象
        InputStreamReader isr = new InputStreamReader(new FileInputStream(""));
        //根据目的地创建字符输出流对象
        OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(""));

        //一次读写一个字符
        int ch;
        while ((ch = isr.read()) != -1) {
            osw.write(ch);
        }

        //一次读写一个字符数组数据
        char[] chs = new char[1024];
        int len;
        while ((len = isr.read(chs)) != -1) {
            osw.write(chs, 0, len);
        }

        //释放资源
        osw.close();
        isr.close();

7、字符流的便捷类

转换流的名字比较长,我们常见的操作都是按照本地默认编码实现的,为了简化书写,转换流提供了对应的子类:
FileReader(String fileName):用于读取字符文件的便捷类
FileWriter(String fileName):用于写入字符文件的便捷类
        FileReader fr = new FileReader("");
        FileWriter fw = new FileWriter("");

        //一次读写一个数据
        int ch;
        while ((ch = fr.read()) != -1) {
            fw.write(ch);
        }

        //一次读写一个字符数组
        char[] chs = new char[1024];
        int len;
        while ((len = fr.read()) != -1){
            fw.write(chs,0,len);
        }

        fr.close();
        fw.close();

8、字符缓冲流使用

        //根据目的地创建字符缓冲输入流对象
        BufferedReader br = new BufferedReader(new FileReader(""));

        //根据数据源创建字符缓冲输出流对象        
        BufferedWriter bw = new BufferedWriter(new FileWriter(""));
        bw.write("hello\r\n");
        bw.write("world\r\n");
        bw.close();

        //一次读取一个字符数据
        int ch;
        while ((ch = br.read()) != -1){
            System.out.println((char)ch);
        }
        br.close();

        //一次读取一个字符数组数据
        char[] chs = new char[1024];
        int len;
        while((len= br.read(chs))!=-1){
            System.out.println(new String(chs,0,len));
        }
        br.close();

9、字符缓冲流复制方法

        //根据数据源创建字符缓冲输入流对象
        BufferedReader br = new BufferedReader(new FileReader(""));
        //根据目的地创建字符缓冲输出流对象
        BufferedWriter bw = new BufferedWriter(new FileWriter(""));

        //一次读写一个字符数据
        int ch;
        while ((ch = br.read()) != -1) {
            bw.write(ch);
        }

        //一次读写一个字符数组数据
        char[] chs = new char[1024];
        int len;
        while ((len = br.read(chs)) != -1) {
            bw.write(chs, 0, len);
        }

        //释放资源
        bw.close();
        br.close();

10、字符缓冲流特有功能

BufferedWriter:
    void newLine():写一行行分隔符,行分隔符字符由系统属性定义
BufferedReader:
    public String readLine():读一行文字。结果包含行的内容的字符串,不包括任何行终止字符,如果流的结尾到此处,则为null
        BufferedWriter bw = new BufferedWriter(new FileWriter(""));
        for (int i = 0; i < 10; i++) {
            bw.write("hello" + i);
            bw.newLine();//换行
            bw.flush();//刷新
        }
        bw.close();

        BufferedReader br = new BufferedReader(new FileReader(""));
        String line;
        while((line = br.readLine())!=null){
            System.out.println(line);
        }
        br.close();

11、字符缓冲流特有功能复制方法

        //根据数据源创建字符缓冲输入流对象
        BufferedReader br = new BufferedReader(new FileReader(""));
        //根据目的地创建字节缓冲输出流对象
        BufferedWriter bw = new BufferedWriter(new FileWriter(""));

        String line;
        while((line = br.readLine())!=null){
            bw.write(line);
            bw.newLine();
            bw.flush();
        }

        //释放资源
        bw.close();
        br.close();

猜你喜欢

转载自blog.csdn.net/m0_56442091/article/details/122886270