io流 FileReader 、 FileWriter、缓存流

 字节流的父类: InputStream / OutputStream
 字符流的父类: Reader / Writer

 字节流的普通子类: FileInputStream / FileOutputStream
 字符流的普通子类: FileReader / FileWriter

 带缓冲区的字节流: BufferedInputStream / BufferedOutputStream
 带缓冲区的字符流: BufferedReader / PrintWriter(打印流)

 转换流: OutputStreamWriter / InputStreamReader

字符流

一、写数据:

1、FileWriter:

1.1、构造方法

```JAVA
FileWriter(String filename)
eg: FileWriter fw = new FileWriter("d://a.txt");在D盘的目录上创建名为a的txt文件。
    
    
FileWriter(String filename, boolean append)
eg:`FileWriter fw = new FileWriter(“d://a.txt”, true);``在D盘的目录上创建名为a且可追加写入的txt文件。

1.2、 成员方法

1.2.1、写入write()

void write(String str):写一个字符串
void write(String str, int index, int length):写一部分的字符串
void write(int ch):写一个字符,既可以是char类型,也可以是char类型对应的int类型(‘a’ <-> 9void write(char[] chs):写一个字符数组
void write(char[] chs, int index, int len):写一部分的字符数组中的字符

1.2.2、刷新flush()

fw.close():刷新缓冲区后,再通知系统释放与该文件相关的资源

1.2.3、关闭close()

fw.close():刷新缓冲区后,再通知系统释放与该文件相关的资源

二、读数据

2、FileReader

2.1、构造方法

fw.close():刷新缓冲区后,再通知系统释放与该文件相关的资源

2.2、成员方法

2.2.1、读取read()

int read()
eg:int ch = fr.read()每次读取一个字符,当ch == -1时,表示没有数据可供读取了
    
int read(char[] cbuf)一次读取一个字符数组的数据,返回的是实际读取的字符个数,若返回值为-1,则表示数据已读完,没有新的数据可供读取。
eg:FileReader fr = new FileReader("a.txt");//不加盘符默认为当前java文件根目录文件夹
char[] chs = new char[1024];//设置读取字符串的长度,默认最好为1024
int len;
while((len = fr.read(chs)) != -1){
		System.out.print(new String(chs, 0, len));//将读取的字符数组以字符串形式输出

2.2.2、关闭close()

fw.close():刷新缓冲区后,再通知系统释放与该文件相关的资源

三、缓冲流

3、BufferedWriter与BufferedReader

缓冲流,也叫⾼效流,是对基本的 FileXxx 流的增强, 缓冲流的基本原理,是在创建流对象时,会创建⼀个内置的默认⼤⼩的缓冲区数组,通过缓冲区读写,减少系统IO次数,从⽽提⾼读写的效率。

缓冲字节流
BufferedInputStream  extends InputStream                 BufferedOutputStream extends OutputStream              flush()  close()  方法不变  read*2  write*3         FileInputStream  -> 套起来 就变成 BufferedInputStream       FileOutputStream -> 套起来 就变成 BufferedOutputStream
eg:
FileReader fr = new FileReader("bb/aa.txt");
BufferedReader br = new BufferedReader(fr);
//BufferedWriter构造方法于其相同

3.2、成员方法

3.2.1、flush() close() read() write() 同上

3.2.2 特有方法

字符缓冲流的基本⽅法与普通字符流调⽤⽅式⼀致,不再阐述,我们来看它们具备的特有⽅法。

BufferedReaderpublic String readLine() :读⼀⾏⽂字。 BufferedWriterpublic void newLine() :写⼀⾏⾏分隔符,由系统属性定义符号。 
eg:
//readLine ⽅法演示,代码如下:
public class BufferedReaderDemo {
 public static void main(String[] args) throws IOException {
 // 创建流对象
 BufferedReader br = new BufferedReader(new FileReader("in.txt"));
 // 定义字符串,保存读取的⼀⾏⽂字
 String line = null;
 // 循环读取,读取到最后返回null
 while ((line = br.readLine()) != null) {
 System.out.print(line);
 System.out.println("------");
 }
 // 释放资源
 br.close();
 }
}

//newLine ⽅法演示,代码如下:
public class BufferedWriterDemo throws IOException {
 public static void main(String[] args) throws IOException {
 // 创建流对象
 BufferedWriter bw = new BufferedWriter(new FileWriter("out.txt"));
 // 写出数据
 bw.write("Java");
 // 写出换⾏
 bw.newLine();
 bw.write("程序");
 bw.newLine();
 bw.write("员");
 bw.newLine();
 // 释放资源
 bw.close();
 }
}
输出效果:
Java
程序
员

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值