【Java】打印流与缓冲区读者完成输入与输出到文件操作

这部分看书上概念,变量声明也多得要命,比较难以看懂,

就算你按照书上的程序运行一次你也未必清楚再干什么。

如果让你自己写一个让用户输入字符,再把这个字符输出到文件,对于初学Java的人来说,可能有些难度


一、基本目标

用户输入字符,如果输入“#”能够停止输入,其余字符则输出到工程目录下的文件a.txt


程序跑完打开工程目录则可以发现a.txt


打开之后发现就是我们输入的内容:



二、制作过程

1、以下的程序,用到输入输出流,必须使用到java.io.*这个包,然后在主函数抛出IO异常

2、缓冲区读者从输入流读取数据,且这个输入流是系统默认输入流,也就是用户在控制台的输入

也就是用户在控制台的输入的东西会先到缓冲区,如果不放到缓冲区,只能读到1个字符,而不是一堆字符

下面while循环中的br.readLine()这个方法是从缓冲区读出一行字符放到s这个字符串里面,再判断这个字符串s是否为null与#,为null与#则跳出,判断s是否为#,千万不可以用s=="#",这是在比对s与#的存储地址是否相等,而不是内容相等,比较字符串内容相等,必须用字符串的equals()方法。

不可以用br.readLine()用来作判断条件,又作为输出对象,

否则系统读到这个方法,则执行一个这个方法,

就会发现跳行现象

3、输出到文件部分,是先声明一个打印流,且这个打印流是打印到文件写者,这个文件写者是对a.txt输出,而且是在a.txt的文件结尾处打印数据,如果把不要第二个参数,或者把第二个参数设置为false,那么文件写者每次输出数据到a.txt,会从头开始,覆盖原来的内容

while循环中的打印流pw使用pw.println()方法,对其打印的对象输出s这个字符串,其中被打印流打印的对象已经在上面初始化打印流的时候声明了,打印到输出到a.txt的文件写者处

4、最后做完所有事,记得人走带门,关闭这个流

import java.io.*;
public class RWER {
	public static void main(String args[]) throws IOException{
		String s;
		System.out.println("输入到文件,结束,请输入“#”");
		BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
		PrintWriter pw=new PrintWriter(new FileWriter("a.txt",true));
		while((s=br.readLine())!=null){
		System.out.println("你输入了:"+s);
		if(s.equals("#"))
			break;
		pw.println(s);
		}
		pw.close();
		br.close();
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值