现在很容易就忘记了事情,忘记是在昨天早上还是前天早上做的那件事,忘记本应该现在做的那件事,我感觉是因为生活无限的重复没有标志性的事情,没有令我印象深刻的事情才会有这种感觉和错觉。这就是我现在的生活状态。
开始技术。其实这个技术很简单可以写也可以不写,但为了记录我的学习过程我还的将其写下来吧。昨天就看了这么一点简单的东西,如若不写昨日就是技术空白了。
在【20】中讲了PrintSteam,那么接下来就学习了PrintWriter因为在API中俩个是完全挨着的,那么什么是PrintWriter呢。在API中是这样讲的。
(1)向文本输出流打印对象的格式化表示形式。此类实现在 PrintStream
中的所有 print 方法。它不包含用于写入原始字节的方法,对于这些字节,程序应该使用未编码的字节流进行写入。
(2)与 PrintStream
类不同,如果启用了自动刷新,则只有在调用 println、printf 或 format 的其中一个方法时才可能完成此操作,而不是每当正好输出换行符时才完成。这些方法使用平台自有的行分隔符概念,而不是换行符。
(3)此类中的方法不会抛出 I/O 异常,尽管其某些构造方法可能抛出异常。客户端可能会查询调用 checkError()
是否出现错误。
我自己总结一下就是需要记住几点首先是格式化表示,然后是对3个方法实现自动刷新功能,最后它不用抛出异常。在其构造函数中可以接受 * 1.字符串路径 * 2.File对象 * 3.字节输出流* 4.字符输出流这四个参数。
现在看看一直简单的小小程序。目的是将输入到控制台的文字或字符写回控制台。
public static void main(String[] args) throws IOException {
/*
* PrintWriter:字符打印流
* 构造函数参数:
* 1.字符串路径
* 2.File对象
* 3.字节输出流
* 4.字符输出流
*/
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
PrintWriter out = new PrintWriter(System.out,true);
//true自动刷新,只对3个方法有效print println format
String line = null;
while((line=bufr.readLine())!=null){
if("over".equals(line))
break;
out.println(line);
//out.write("\n");
//out.flush();
}
out.close();
bufr.close();
}
从这个代码里面可以清楚的看出自动刷新的好处。
同时可以将输出端改为一个文件,同时实现自动刷新。
PrintWriter out2 = new PrintWriter(new FileWriter("a.txt"),true);
可以看出这个方法还是很方便的。