java基础IO流以及缓冲流BufferedReader,BufferedWriter

本文介绍了Java中的基础IO流,包括FileWriter和FileReader的构造方法与写入、读取数据的方法。重点讲解了缓冲流BufferedReader和BufferedWriter的使用,以及StringBuilder在处理文本数据时的应用。通过示例代码展示了如何进行文件操作和高效的数据传输。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

IO流用来处理设备之间的数据传输
– 文件复制,上传文件和下载文件
• IO流分类
– 输出流 • FileWriter
– 输入流 • FileReader


一、FileWriter

• 构造方法
– FileWriter(String fileName)
• 成员方法
– void write(String str)
– void flush()
– void close()

二、FileWriter方法

1.构造方法

FileWriter(String fileName); //创建输出流对象,如果有该文件,则清空文件内容,否则创建对应文件。
FileWriter fw = new FileWriter(“c.txt”,true); //不清空文件,表示追加写入,默认是false
绝对路径:以盘符开始的路径(d:\a.txt)
FileWriter fw = new FileWriter(“d:\a.txt”);
相对路径:相对当前项目而言的,在项目的根目录下(a.txt)
FileWriter fw = new FileWriter(“a.txt”);```

2.FileWriter写数据的方法

write(); 数据没有直接写到文件,其实是写到了内存缓冲区,需要flush()。

1.void write(String str):写一个字符串数据
fw.write(“IO流你好,Hello”);

2.void write(String str,int index,int len):写一个字符串中的一部分数据
在后面追加写入str字符的一部分,从str的下标index开始,len数量的长度
fw.write(“12345”);
fw.write(“12345”,1,3);
内容为:12345234

3.void write(int ch):写一个字符数据,这里写int类型的好处是既可以写char类型的数据,也可以写char对应的int类型的值。‘a’,97
fw.write(‘a’);
fw.write(97);
内容为:aa

4.void write(char[] chs):写一个字符数组数据
5.void write(char[] chs,int index,int len):写一个字符数组的一部分数据
6.换行
windows:\r\n ,linux:\n , mac:\r
fw.write(“\r\n”);

3.flush()

flush():刷新缓冲区。流对象还可以继续使用。
fw.flush();
即将内存缓冲区中的数据写入a.txt文件。

4.close()

close():先刷新缓冲区,然后通知系统释放资源。流对象不可以再被使用了。一般用于关闭流,释放资源。
fw.close();


三、FileReader读数据

• 构造方法
– FileReader(String fileName)
• 成员方法
– int read()
– int read(char[] cbuf)

四、FileReader方法

1.构造方法

FileReader(String fileName); //fileName为文件名

2.FileReader读数据的方法

1.int read();//读取一个字符,索引到下一位
int ch = fr.read(); //返回的是字符的对应编码
char c = (char)ch; //转换回字符
如果读取完数据后,继续读取会读取到 -1,以此可以做循环打断的条件,如下

while((len=fr.read(chs))!=-1) {
		//System.out.println(new String(chs,0,len));
		System.out.print(new String(chs,0,len));
	}

2.int read(char[] cbuf); //读取cbuf字符数组的长度,放入cbuf里面,包括换行符

char[] chs = new char[5];
int len = fr.read(chs);
System.out.println("len:"+len);	//len:5
//System.out.println(new String(chs));//对应的字符串
System.out.println(new String(chs,0,len));//对应的字符串

一般写法:

//char[] chs = new char[5];
	char[] chs = new char[1024]; //这里可以是1024及其整数倍
	int len;
//1:fr.read(chs)
//2:len=fr.read(chs)
//3:len != -1
	while((len=fr.read(chs))!=-1) {
		System.out.print(new String(chs,0,len));
	}

五、缓冲流 BufferedReader,BufferedWriter

一般都使用缓冲流,这样效率高点。

  • //创建输入缓冲流对象
    BufferedReader br = new BufferedReader(newFileReader(“FileWriterDemo.java”));

  • //创建输出缓冲流对象
    BufferedWriter bw = new BufferedWriter(new FileWriter(“Copy.java”));
    其中有两个比较特殊的方法

  • BufferedWriter void newLine():写一个换行符,这个换行符由系统决定
    *bw.newLine();等效于 bw.write(“\r\n”);

  • BufferedReader String readLine():一次读取一行数据,但是不读取换行符

  • 因此,读写数据

     String line;
     while((line=br.readLine())!=null) {
     	bw.write(line);
     	bw.newLine();
     	bw.flush();
     }
    

六、StringBuilder的使用

遍历集合,得到每一个学生信息,并把学生信息按照一定的格式写入文本文件

	for(int x=0; x<array.size(); x++) {
		Student s = array.get(x);
		//heima001,向问天,30,北京
		StringBuilder sb = new StringBuilder();			sb.append(s.getId()).append(",").append(s.getName()).append(",").append(s.getAge()).append(",").append(s.getAddress());
		bw.write(sb.toString());
		bw.newLine();
		bw.flush();
	}

总结

基础的IO流常用的方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值