現在很容易就忘記了事情,忘記是在昨天早上還是前天早上做的那件事,忘記本應該現在做的那件事,我感覺是因爲生活無限的重複沒有標誌性的事情,沒有令我印象深刻的事情纔會有這種感覺和錯覺。這就是我現在的生活狀態。
開始技術。其實這個技術很簡單可以寫也可以不寫,但爲了記錄我的學習過程我還的將其寫下來吧。昨天就看了這麼一點簡單的東西,如若不寫昨日就是技術空白了。
在【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);
可以看出這個方法還是很方便的。