Java之列印流
阿新 • • 發佈:2022-02-19
列印方法的設計思想:
提高已有類的功能(裝飾設計模式)。
例如:OutputStream是唯一可以實現輸出操作的標準類,所以應該以其為核心根本,但是這個類輸出的操作有限,不方便進行各種型別的輸出操作,
那麼就對它做出了一層包裝(沒有脫離其本質,但是功能更加強大,就像鋼鐵俠本質是人,但是穿上了裝甲變得更加強大了,能做的事也就更多了),如下程式碼:
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.nio.charset.StandardCharsets;
class PrintUtil implements AutoCloseable{ // 常用的列印輸出類
private OutputStream outputStream; // 位元組輸出流
public PrintUtil(OutputStream outputStream) { // 通過構造方法傳入的引數,以決定輸出的位置
this.outputStream = outputStream;
}
public void print(long num){
this.print(String.valueOf(num));
}
public void println(long num){
this.println(String.valueOf(num));
}
public void print(String str){
try {
this.outputStream.write(str.getBytes(StandardCharsets.UTF_8));
} catch (IOException e) {
e.printStackTrace();
}
}
public void println(String str){
this.print(str + "\r\n");
}
@Override
public void close() throws Exception {
this.outputStream.close();
}
}
public class MAIN {
public static void main(String[] args) throws Exception{
File file = new File("D:" + File.separator + "Demo_2_15" + File.separator + "Copy.txt");
PrintUtil pu = new PrintUtil(new FileOutputStream(file));
pu.println("姓名:張三");
pu.print("年齡:");
pu.println(79);
pu.close();
}
}
以上程式碼以OutputStream為核心,擴充套件其列印的功能。
列印流:
以上可以發現OutputStream的不足,那麼設計者就彌補了這一點,設計了列印流。
PrintStream(JDK 1.0): |
PrintWriter(JDK 1.1): |
public class PrintStream extends FilterOutputStream implements Appendable,Closeable; |
public class PrintWriter extends Writer; |
public PrintStream(OutputStream out); |
public PrintWriter(OutputStream out); public PrintWriter(Writer out); |
使用PrintWriter實現資料的輸出操作;
import java.io.File;
import java.io.FileOutputStream;
import java.io.PrintWriter;
public class MAIN {
public static void main(String[] args) throws Exception{
File file = new File("D:" + File.separator + "Demo_2_15" + File.separator + "Copy.txt");
PrintWriter pu = new PrintWriter(new FileOutputStream(file));
pu.println("姓名:張三");
pu.print("年齡:");
pu.println(79);
pu.close();
}
}
從JDK 1.5開始PrintWriter裡面追加有格式化輸出的操作支援:
public PrintWriter printf (String format,0bject... args);
格式化輸出:
import java.io.File;
import java.io.FileOutputStream;
import java.io.PrintWriter;
public class MAIN {
public static void main(String[] args) throws Exception{
File file = new File("D:" + File.separator + "Demo_2_15" + File.separator + "Copy.txt");
PrintWriter pu = new PrintWriter(new FileOutputStream(file));
// 格式化輸出
String name = "小強子";
int age = 15;
double salary = 4000.43564298;
pu.printf("姓名:%s , 年齡:%d , 工資:%1.2f",name,age,salary);
pu.close();
}
}
比起直接使用OutputStream類,那麼使用PrintWriter或者PrintStream類的操作會更加的簡單。
以後只要是程式進行內容輸出的時候全部使用列印流。