IO流之字符输出与输入流

1.字符输入流【Reader】

       java.io。Reader类:抽象类,表示用于读取字符流的所有类的超类,可以读取字符信息到内中
            - public abstract void close():关闭此流并释放与此流相关联的任何系统资源
            - public int read():从输入流读取一个字符,读取到末尾返回 -1
            - public int read(char cbuf[]):从输入流中读取一些字符,并将他们存储到字符数组cbuf中,读取到末尾返回 -1

1.1、FileReader类

java.io.FileReader类,继承Reader类,表示字符输入流,用来读取字符对象数字
构造方法:
    - public FileReader(String fileName):FileReader类对象,给定要读取的文件的名称
    - public FileReader(File file):FileReader类对象,给定要读取的file文件的名称
注意:
    1.当你创建一个输入流对象时,必须要传入一个文件路径
    2.该路径下,如果没有文件,就会抛出FileNotFoundException

// 文件存在
FileReader fr1 = new FileReader("day12_File类与递归&IO流&字符流和字节流\\resources\\a.txt");
FileReader fr2 = new FileReader(new File("day12_File类与递归&IO流&字符流和字节流\\resources\\a.txt"));
// 文件不存在,会报异常
FileReader fr3 = new FileReader("day12_File类与递归&IO流&字符流和字节流\\resources\\a.txt");

1.2、读取单个字符数据

        - public abstract void close():关闭此流并释放与此流相关联的任何系统资源
        - public int read():从输入流读取一个字符,读取到末尾返回 -1

// 创建字符输入流对象
FileReader fr = new FileReader("day12_File类与递归&IO流&字符流和字节流\\\\resources\\\\a.txt");
int len;// 每次读取返回的字符数据
// 循环读取
while ((len = fr.read()) != -1){
    System.out.print((char)len);
}
// 关闭流
fr.close();

1.3、读取字符数组长度的字符数据

        - public abstract void close():关闭此流并释放与此流相关联的任何系统资源
        - public int read(char cbuf[]):从输入流中读取一些字符,并将它们存储到字符数组cbuf中,读取到末尾返回 -1

// 创建字符输入流对象
FileReader fr = new FileReader("day12_File类与递归&IO流&字符流和字节流\\\\resources\\\\a.txt");
int len;// 每次读取返回的字符数据
char[] ch = new char[1024];
// 循环读取
while ((len = fr.read(ch)) != -1){
    System.out.println(ch);
}
// 关闭流
fr.close();

2.字符输出流Writer

        java.io.Writer类,抽象类,用于表示字符输出流的所有类的超类,将指定的字符信息写出到目的地
        成员方法:
              - public void write(int c)
              - public void write(char cbuf[])
              - public abstract void write(char cbuf[], int off, int len)
              - public void write(String str)
              - public void write(String str, int off, int len)
              - public abstract void flush()
              - public abstract void close()

2.1、FileWriter类

java.io.FileWriter类 是Writer的子类,表示字符输出流,可以用来写出字符数据
构造方法:
    - public FileWriter(String fileName)
    - public FileWriter(String fileName, boolean append)
    - public FileWriter(File file)
    - public FileWriter(File file, boolean append)
   注意:
       1.当你创建一个字符输出流对象时,必须传入一个文件路径
       2.前面2个构造方法,传入的路径,如果没有这个文件,会创建这个文件,如果文件里面有数据,数据会被清空
       3.后面2个构造方法,多了一个append的参数,true表示不清空,false默认清空

FileWriter fw = new FileWriter("day12_File类与递归&IO流&字符流和字节流\\resources\\a.txt");
FileWriter fw1 = new FileWriter(new File("day12_File类与递归&IO流&字符流和字节流\\resources\\a.txt"));
FileWriter fw2 = new FileWriter("day12_File类与递归&IO流&字符流和字节流\\resources\\a.txt",true);
FileWriter fw3 = new FileWriter(new File("day12_File类与递归&IO流&字符流和字节流\\resources\\a.txt"),true);

2.2、写单个字符

        - public void write(int c)

// 第一步:创建字符输出流对象。关联目的地文件路径
FileWriter fw = new FileWriter("day12_File类与递归&IO流&字符流和字节流\\resources\\b.txt",true);
// 第二步:写出单个字符
fw.write(97);
// 第三步:关闭流
fw.close();

2.3、写字符数组

        - public void write(char cbuf[])
        - public abstract void write(char cbuf[], int off, int len)

// 第一步:创建字符输出流对象。关联目的地文件路径
FileWriter fw = new FileWriter("day12_File类与递归&IO流&字符流和字节流\\\\resources\\\\c.txt");
char[] ch = {'我','是','一','名','程','序','员'};
fw.write(ch);
// 关闭流
fw.close();

2.4、写出字符串

        - public void write(String str)
        - public void write(String str, int off, int len)

// 第一步:创建字符输出流对象。关联目的地文件路径
FileWriter fw = new FileWriter("day12_File类与递归&IO流&字符流和字节流\\\\resources\\\\c.txt");
// 第二步:写出字符串
String str = "今天心情不错,又是新的一天";
//获取字符串长度
int len = str.length();
fw.write(str,0,len);
// 第三步:关闭流
fw.close();

注:字符流 只能操作文本文件,不能操作图片,视频等非文本文件

2.5、关闭与刷新

        - public abstract void flush():刷新缓冲区,流对象可以继续使用
        - public abstract void close():关闭流,释放系统资源,关闭流会顺带刷新缓冲区,关闭之后不可操作

// 第一步:创建字符输出流对象。关联目的地文件路径
FileWriter fw = new FileWriter("day12_File类与递归&IO流&字符流和字节流\\\\resources\\\\d.txt");
// 第二步:写出字符串
String str = "今天天气不错";
fw.write(str);
fw.write("\n");
fw.write("这是第二行");
fw.flush();
fw.write("\n");
fw.write("这是flush之后的数据");
// 第三步:关闭流
fw.close();
//  fw.write("\r\n");
//  fw.write("这是第四行");

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值