关于字符流的总结

1.字符流写数据
  • 介绍

    Writer: 用于写入字符流的抽象父类

    FileWriter: 用于写入字符流的常用子类

  • 构造方法

    方法名说明
    FileWriter(File file)根据给定的 File 对象构造一个 FileWriter 对象
    FileWriter(File file, boolean append)根据给定的 File 对象构造一个 FileWriter 对象
    FileWriter(String fileName)根据给定的文件名构造一个 FileWriter 对象
    FileWriter(String fileName, boolean append)根据给定的文件名以及指示是否附加写入数据的 boolean 值来构造 FileWriter 对象
  • 成员方法

    方法名说明
    void write(int c)写一个字符
    void write(char[] cbuf)写入一个字符数组
    void write(char[] cbuf, int off, int len)写入字符数组的一部分
    void write(String str)写一个字符串
    void write(String str, int off, int len)写一个字符串的一部分
  • 刷新和关闭的方法

    方法名说明
    flush()刷新流,之后还可以继续写数据
    close()关闭流,释放资源,但是在关闭之前会先刷新流。一旦关闭,就不能再写数据
代码演示1:
package com.demozifu;

import java.io.FileWriter;
import java.io.IOException;

public class CharStreamDemo05 {
    public static void main(String[] args) throws IOException {
        //flush()刷新流。刷新完毕之后,还可以继续写数据
        //close()关闭流。释放资源。一旦关闭,就不能写数据
        FileWriter fw= new FileWriter("day11\\aaa.txt");

        String s="你好我好大家好";
        fw.write(s);
        //fw.flush();  不关闭的话,刷新flush方法也可以添加数据
        fw.write(97);
        //fw.flush();

        fw.close();//关闭流,释放资源,但是在关闭之前会先刷新流。一旦关闭,就不能再写数据
        //fw.write("aaa");   关闭之后再写入会报错Stream closed

    }
}

2.字符流读数据
  • 介绍

    Reader: 用于读取字符流的抽象父类

    FileReader: 用于读取字符流的常用子类

  • 构造方法

    方法名说明
    FileReader(File file)在给定从中读取数据的 File 的情况下创建一个新 FileReader
    FileReader(String fileName)在给定从中读取数据的文件名的情况下创建一个新 FileReader
  • 成员方法

    方法名说明
    int read()一次读一个字符数据
    int read(char[] cbuf)一次读一个字符数组数据
代码演示2:
package com.demozifu;

import java.io.FileReader;
import java.io.IOException;
import java.util.Arrays;

public class CharStreamDemo07 {
    public static void main(String[] args) throws IOException {
        //创建字符输入流的对象
        FileReader fr= new FileReader("day11\\aaa.txt");

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

代码演示3:
package com.demozifu;

import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;

public class CharStreamDemo08 {
    public static void main(String[] args) throws IOException {
        //将键盘录入的用户名和密码保存到本地实现永久化存储
        //要求:用户名单独一行,密码独占一行

        //创建字符输入流的对象
        FileWriter fw= new FileWriter("day11\\student.txt");
        Scanner sc= new Scanner(System.in);
        System.out.println("请输入用户名:");
        String username = sc.next();
        System.out.println("请输入密码:");
        String password = sc.next();
        fw.write(username);
        fw.write("\r\n");
        fw.write(password);
        fw.write("\r\n");

        //刷新流
        fw.flush();
        //关闭资源
        fw.close();

        FileReader fr= new FileReader("day11\\student.txt");
        //字符流用的数组是char类型
        char[] bytes= new char[1024];
        int len;
        System.out.println("用户名和密码是:");
        while ((len=fr.read(bytes))!=-1){
            String s= new String(bytes,0,len);
            System.out.println(s);
        }
    }
    
}

注意:

1.复制文件必须使用字节流

2.字节流里使用byte类型的数组进行读入,字符流里使用char类型的数组进行读入
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值