在日常開發中,Java的标準包有時隻能滿足開發使用的最低标準,OutputStream便是如此。本節将為讀者介紹針對OutputStream類進行自定義開發實作優化輸出功能的方法。
【本節目标】
通過閱讀本節内容,你将了解到OutputStream在輸出操作方面有限的功能,了解到“裝飾設計模式”的基本思想,學會通過對OutputStream類的定制完成對輸出操作的優化。
列印流
如果要想通過程式實作内容的輸出,核心的本質一定要依靠OutputStream類完成,但是OutputStream有一個很大的缺點:這個類的資料輸出操作功能有限:public void write(byte[] b) throws IOException,所有的資料一定要轉為位元組數組後才能輸出,假設現在項目裡面可能輸出的是long、double、Date,這種情況下就必須将這些資料變為位元組的形式來處理,這樣的處理一定是非常麻煩的,是以在開發之中最初的時候為了解決此類的重複操作,往往會由開發者自行定義一些功能類已簡化輸出過程。
範例:列印流設計思想
import java.io.File;
import java.io.FileOutputStream;
import java.io.Exception;
import java.io.OutputStream;
public class JavaAPIDemo {
public static void main(String[] args) throws Exception {
File file = new File("d:" + File.separator +"mldn.txt"); //定義操作檔案
PrintUtil pu= new PrintUtil(new FileOutputStream(file));
pu.println("姓名:小強子");
pu.print("年齡:");
pu.println(78);
pu.close();
}
}
class PrintUtil implements AutoCloseable { //實作一些常用資料的輸出
private OutputStream output; //不管現在如何進行輸出操作,核心使用的就是OutputStream
public PrintUtil(OutputStream output) { //由外部來決定輸出的位置
this.output = output;
}
@Override
public void close() throws Exception {
this.output.close();
}
public void print(String str) { //輸出字元串
try {
this.output.write(str.getBytes()); //輸出
} catch (IOException e) {
e.printStackTrace();
}
}
public void println(String str) {
this.print(str + "\r\n");
}
public void print(long num) {
this.print(String.valueOf(num));
}
public void println(long num) {
this.println(String.valueOf(num));
}
}
在整個操作過程之中列印流的設計思想的本質在于:提高已有類的功能,例如:OutputStream是唯一可實作輸出的操作标準類,是以應該以其為核心根本,但是這個類的輸出的操作功能有限,是以不友善進行輸出各個資料類型,那麼就為它做出了一層包裝,是以此時采用的設計思想就是“裝飾設計模式”。
想學習更多的Java的課程嗎?從小白到大神,從入門到精通,更多精彩不容錯過!免費為您提供更多的學習資源。
本内容視訊來源于
阿裡雲大學 下一篇:使用列印流優化資料輸出 | 帶你學《Java語言進階特性》之六十五 更多Java面向對象程式設計文章檢視此處