java之Reader类与Writer类

Reader类是字符输入流,它和InputStream类的区别是:InputStream类是一个字节流,以byte为单位读取;而Reader类是一个字符流,以char为单位读取。

Reader类最重要的方法是read()方法,使用这个方法读取字符流的下一个字符,范围是0~65535,当读到末尾没有字符时,返回-1.

Reader的常用子类:
1、FileReader() //实现了文件字符流的输入(使用时要指定编码)
2、CharArrayReader()//实现了把一个char[]数组变成一个字符输入流
3、StringReader()//实现了把字符串变成一个字符输入流
*另外,我们可以使用try(resource)来保证Reader类在无论有没有IO错误时都能正确关闭:try(Reader r =new FileReader(路径)){....}
*我们还可以设置一个缓冲区 :使用reader(char[] arrs)方法

try(Reader r=new FileReader(路径){
	char[] buffer =new char[100]; //创建缓存字符数组
	int b;
	while((b=r.read(buffer)!=-1){
	System.out.prinln("一共读到"+b+"个字符");
	}
}
已知/test目录下的a.txt文件中的内容为一个 hello 字符串。
则执行结果为:读到5个字符

一个简单例子:

要求:
接收给定的一行字符串(如:/test/a.txt。代表文件路径);
使用字符输入流读取给定路径中的文件内容;
输出文件内容。
import java.io.*;
import java.util.Scanner;

public class FileTest {
    public static void main(String[] args) throws IOException {
        Scanner input =new Scanner(System.in);
        String str=input.next().toString();
		Reader r=new FileReader(str);
        int b=0;
        while((b=r.read())!=-1){
            System.out.print((char)b);
        }
        r.close();
        
    }
}

Reader 是带编码转换器的 InputStream,它把 byte 转换为 char;那么 Writer 就是带编码转换器的 OutputStream,它把 char 转换为 byte 并输出。

Writer类的常用方法:
1、write()//写入一个字符到输出流
2、close()//关闭输出流
3、flush()//将缓冲区的内容输出到目的地

writer类的常用子类:
1、FileWriter()//向文件中写入字符流
2、CharArrayWriter() // 模拟字符流的输出

一个简单例子:

要求:
接收给定的一行字符串(如:/test/testfile.txt,hello world。逗号前代表文件路径,逗号后代表字符串);
使用字符输出流把给定字符串写入到给定文件中。

import java.io.*;
import java.util.Scanner;

public class FileTest {
    public static void main(String[] args) throws IOException {
        // 接收给定字符串
        Scanner input =new Scanner(System.in);
        String str =input.next().toString();
        // 切割字符串
        String[] arrs =str.split(",");
        // 创建FileWriter对象
        // 向文件中写入字符流
        try(Writer w =new FileWriter(arrs[0])){
            w.write(arrs[1]);
            w.flush();
            w.close();
        }
    }
}
测试输入:/test/testfile.txt,hello world
输出:hello world
  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值