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

来源:互联网 发布:楼盘销售软件 编辑:程序博客网 时间:2024/06/06 01:16

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

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

如果让你自己写一个让用户输入字符,再把这个字符输出到文件,对于初学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();}}


0 0