Java---字符流

一、字符流

字符流是什么

  • 字符流是可以直接读取字符的IO流
  • 字符流读取字符,就要先读去到字节数据,然后转为字符,如果要写出字符,需要把字符转为字节再写出

文件字符流
字符流的两个抽象父类:字符输出流:Writer 和字符输入流:Reader

1、字符输出流:Writer

在这里插入图片描述

 java.io.Writer抽象类时标识用于写出字符流的所有类的超类,将指定的字符信息写出到目的地。它定义了字节输出流的基本共性功能方法。

  • void write(int c):写入单个字符
  • void write(char[] cbuf):写入字符数组
  • abstract void write(char[] cbuf,int off,int len):写入字符数组的某一部分,off数组的开始索引,len写的字符个数
  • void write(String str):写入字符串
  • void write(String str,int off,int len):写入字符串的某一部分,off字符串的开始索引,len写的字符个数
  • void flush():刷新该流的缓冲
  • void close():关闭此流,但要先刷新它。

FileWriter类

java.io.FileWriter类是写出字符到文件的便利类。构造时使用系统默认的字符编码和默认字节缓冲区。

作用:把内存中的字符数据写入到文件中

构造方法摘要
FileWriter(File file)
          根据给定的 File 对象构造一个 FileWriter 对象。
FileWriter(File file, boolean append)
          根据给定的 File 对象构造一个 FileWriter 对象。
FileWriter(FileDescriptor fd)
          构造与某个文件描述符相关联的 FileWriter 对象。

FileWriter(String fileName)

          根据给定的文件名构造一个 FileWriter 对象。
FileWriter(String fileName, boolean append)
          根据给定的文件名以及指示是否附加写入数据的 boolean 值来构造 FileWriter 对象。

 参数:写入数据的目的地

String name 文件路径;File file 文件

构造方法作用:

1.创建一个FileWriter对象;

2.会根据构造方法中传递的文件/文件路径,创建文件;

3.会把FileWriter对象指向创建好的文件。

package test4;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;

public class WriterTest07 {
    public static void main(String[] args) throws IOException {
        File f2=new File("d:/c.txt");
        if (!f2.exists()){
            f2.createNewFile();
        }

        //定义一个字符输出流,向f2文件写入内容
        Writer out=new FileWriter(f2);

        out.write(97);

        out.write((int)'中');

        char[] ch={'天','上','空','气','好','呢'};
        out.write(ch,0,2);

        out.write("飞天肉饼");
        out.write("abcdef",0,3);

        out.flush();//字符输出流有缓冲区的概念,需要刷新缓冲区才更新到硬盘

        out.close();

    }
}
  • close() 和 flush() 的区别

    • close() 关闭流对象,但是先刷新一次缓冲区。关闭之后,流对象不可以继续再使用了。
    • flush() 仅仅刷新缓冲区,刷新之后,流对象还可以继续使用。

2、字符输入流:Reader

在这里插入图片描述

java.io.Reader抽象类是标识用于读取字符流的所有类的超类,可以读取字符信息到内存中。它定义了字符输入流的基本共性功能方法。

磁盘-->内存

public void close():关闭此流并释放与此流相关联的任何系统资源。

public int read():从输入流读取一个字符。

public int read(char[] cbuf):从输入流中读取一些字符。

 FileReader类

java.io.FileReader类是读取字符文件的便利类。构造时使用系统默认的字符编码和默认字节缓冲区。

作用:把硬盘文件中的数据以字符的方式读取到内存中。

构造方法摘要
FileReader(File file)
          在给定从中读取数据的 File 的情况下创建一个新 FileReader。
FileReader(FileDescriptor fd)
          在给定从中读取数据的 FileDescriptor 的情况下创建一个新 FileReader。
FileReader(String fileName)
          在给定从中读取数据的文件名的情况下创建一个新 FileReader。

参数:String name文件路径;File file文件

构造方法的作用:

1.创建一个FileReader对象

2.会把FileReader对象指向要读取的文件

​
package test4;

import java.io.*;
import java.util.Arrays;

public class ReaderTest06 {
    public static void main(String[] args) throws IOException {
        //定义file对象
        File f1=new File("d:/a.txt");
        //定义字符输入流,用来读取f1这个文件
        Reader in=new FileReader(f1);

        //读取一个字符(中文占一个字符)
        int n=in.read();//所有的中文字符按照一个字符处理,每次读取一个字符,把读字符转换成对应的编码值
        System.out.println((char)n);

        int n1=in.read();
        System.out.println((char)n1);


        //使用缓冲区读取多个字符
        char[] buffer=new char[10];
        int n=in.read(buffer);//每次最多读取buffer数组长个字符,把读取到的字符存入buffer数组中,返回的是实际读取到的字符数
        System.out.println(n);
        System.out.println(Arrays.toString(buffer));

        char[] buffer1=new char[10];
        int n1=in.read(buffer1);//每次最多读取buffer1数组长个字符,把读取到的字符存入buffer数组中,返回的是实际读取到的字符数
        System.out.println(n1);
        System.out.println(Arrays.toString(buffer1));

    }
}

​
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值