文件字符输入流,文件字符输出流

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

读取一个字符返回

package com.char_stream;

import java.io.FileReader;
import java.io.Reader;
/*
FileInputStream   FileOutputStream    FileReader    FileWriter(实现类)

c.FileReader:文件字符输入流。
    --作用:以内存为基准,把磁盘文件的数据以字符的形式读入到内存。
       简单来说,读取文本文件内容到内存中去。

--构造器:
       public FileReader(File file):创建一个字符输入流与源文件对象接通。
      public FileReader(String filePath):创建一个字符输入流与源文件路径接通。

--方法:
     public int read():读取一个字符的编号返回!读取完毕返回-1
     public int read(char[] buffer):读取一个字符数组,读取多少个字符就返回多少个数量,读取完毕返回

小结;
字符流一个一个字符的读取文本内容输出,可以解决中文读取输出乱码的问题。字符流很适合操作文本文件内容。

 */

public class FileReaderDemo01 {
    public static void main(String[] args) throws Exception {
        //目标:每次读取一个字符
        //1.创建一个字符输入流管道与源文件接通

        Reader fr = new FileReader("file-io-app\\src\\out04.txt");   //多态写法

//        //2.读取一个字符(返回的是编号),没有可读返回-1
//        int code = fr.read();
//        System.out.print((char)code);
//        int code1 = fr.read();
//        System.out.print((char)code1);


        //3.使用循环读取
        int code = fr.read();
        while ((code = fr.read())!=-1){
            System.out.print((char) code);      //文本自带换行,不要换行
        }



    }
}

读取一个字符数组返回

在这里插入图片描述

package com.char_stream;

import java.io.FileReader;
import java.io.Reader;

/*
FileInputStream   FileOutputStream    FileReader    FileWriter(实现类)

c.FileReader:文件字符输入流。
    --作用:以内存为基准,把磁盘文件的数据以字符的形式读入到内存。
       简单来说,读取文本文件内容到内存中去。

--构造器:
       public FileReader(File file):创建一个字符输入流与源文件对象接通。
      public FileReader(String filePath):创建一个字符输入流与源文件路径接通。

--方法:
     public int read():读取一个字符的编号返回!读取完毕返回-1
     public int read(char[] buffer):读取一个字符数组,读取多少个字符就返回多少个数量,读取完毕返回

小结;
字符流一个一个字符的读取文本内容输出,可以解决中文读取输出乱码的问题。字符流很适合操作文本文件内容。

 */
public class FileReaderDemo02 {
    public static void main(String[] args)throws Exception {
        //1.创建以恶搞文件字符输入流与源文件接通
        Reader fr = new FileReader("file-io-app\\src\\out04.txt");   //多态写法

        //2.用循环,每次读取一个字符数组,进行读取
        char[] buffer = new char[1024];   //不是1kb,而是1k个字符
        int len;    //记录每次读取多少个字符
        while( (len = fr.read(buffer))!=-1){
            String rs = new String(buffer,0,len);
            System.out.print(rs);
        }
    }

}

文件字符输出流(写文本数据更方便)

在这里插入图片描述

在这里插入图片描述

package com.char_stream;

import java.io.*;
import java.nio.charset.StandardCharsets;

public class FileWriterDemo01 {

    public static void main(String[] args) throws Exception{

       //1.创建一个文件字符输出流管道与目标文件接通
        Writer fw =new FileWriter("file-io-app\\src\\out05.txt");   //覆盖管道,每次启动会清空之前文件的数据

        //2.写数据出去
        //a.public void write(int a):写一个字符出去
             fw.write(98);
             fw.write('a');
             fw.write('陈');   //字符流不会出问题
        fw.write("\r\n");

        //b.public void write(byte[] ,int pos ,int len):写一个字符串出去
        fw.write("桀桀桀");
        fw.write("\r\n");

        //c.public void write (char[] buffer ):写一个字符数组出去
       //  char[] chars ="我打nmd打";  错误写法
        char[] chars ="我打nmd打".toCharArray();    //用toCharArray()将字符串转化为字符数组
        fw.write(chars);                   //一般不用,直接写字符串就行,画蛇添足
        fw.write("\r\n");

        //d.public void write (String c ,int pos ,int len):写一个字符串的一部分出去
        fw.write("我打nmd打",0,5);
        fw.write("\r\n");

        //e.public void write (char[] buffer ):写一个字符数组的一部分
        fw.write(chars,0,2);
        fw.write("\r\n");

        //写数据一定要刷新数据,不然很可能丢失数据
        //fw.flush();
        fw.close();      //关闭包含刷新
    }
}

//运行结果
ba陈
桀桀桀
我打nmd打
我打nmd
我打


字节流、字符流如何选择使用?

字节流适合做一切文件数据的拷贝(音视频,文本)字节流不适合读取中文内容输出

字符流适合做文本文件的操作(读,写)


版权声明:本文为qq_46759852原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。