在IO包中,打印流是輸出信息最方便的類,包含字節打印流(PrintStream)和字符打印流(PrintWriter)。
字節打印流
PrintStream字節打印流是OutputStream字節輸出流的子類。System.out是PrintStream的對象。
PrintStream特點:
1.PrintStream類中有許多print方法和println方法的重載形式,可以對多種數據類型進行打印,並保持數據的表示形式。
2.PrintStream不會拋出IOException。
PrintStream的構造函數可以接收字符串路徑,File對象和字節輸出流。
它的構造函數可以接收字符串路徑說明它可以把數據直接打印到文件。和FileOutputStream一樣。因爲PrintStream也是OutputStream類的子類,所以它也擁有和OutputStream一樣的write方法。但是它還有自己的輸出方法print。
PrintStream ps = new PrintStream("E:\\printstream.txt");
ps.write(97);
ps.print(98);
ps.close();
輸出結果:
a98
在OutputStream類中的write(int b)方法,向輸出流寫一個字節,只保留低八位,24個高位將被省略。然後由記事本解析,就變成了a。
而print(int b)方法,它會保留數據的表示形式,就會先把數據變成字符串,然後把字符串打印出去,所以98是一個字符串,9是一個字節,8是一個字節。
我們以前使用InputStream類中的read()方法返回值也是int類型的,這其實讀出來也是一個字節,然後把它提升爲int類型。
字符打印流
PrintWriter字符打印流的構造函數可以接收字符串路徑,File對象,字節輸出流和字符輸出流。
並且還可以在參數中指定是否需要自動刷新。
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
PrintWriter out = new PrintWriter(new FileWriter("out.txt"),true);
String line = null;
while((line=bufr.readLine())!=null){
if("over".equals(line))
break;
out.println(line.toUpperCase());
// out.flush();
}
out.close();
bufr.close();
}