bufferedWriter的原理:
https://docs.oracle.com/javase/7/docs/api/java/io/BufferedWriter.html
这个writer并不会立即将字符写入目标流里,而是先暂时写在一个“缓冲区”,直到如下情况,缓冲区里的内容才会输出到输出流里:
1 缓冲区满了
2 调用了BufferedWriter的flush方法
3 调用了BufferedWriter的close方法,该方法会先flush缓冲区到输出流。
你的代码正如一楼所说,再还没有将BufferedWriter的缓冲区输出到流里,就退出了整个Java,自然输出文件里不会有任何内容。
日志系统
import java.io.*;
public class TestLog {
public static void main(String[] args) {
String s = null;
//接受控制台输入,转换为字符流然后转化为处理流可以读一行。
BufferedReader br = new BufferedReader(
new InputStreamReader(System.in));
try {
//确定写入文件并且在最后不覆盖输出。
FileWriter fw = new FileWriter(
"c:/Users/Administrator/Desktop/自学心得.txt",true);
//包装为print流,可以不抛异常自动flush。
PrintWriter log = new PrintWriter(fw);
log.println("----" + new Date() + "----");
while ((s = br.readLine()) != null) {
if(s.equalsIgnoreCase("exit")){
break;
}
//s.println(s + "。");
//写入操作。
log.println(s + "。");
}
log.flush();
log.close();
}
catch(IOException e) {
e.printStackTrace();
}
}
}