这部分看书上概念,变量声明也多得要命,比较难以看懂,
就算你按照书上的程序运行一次你也未必清楚再干什么。
如果让你自己写一个让用户输入字符,再把这个字符输出到文件,对于初学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();
}
}