1. 程式人生 > 其它 >Java之列印流

Java之列印流

列印方法的設計思想:

提高已有類的功能(裝飾設計模式)。

例如: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類的操作會更加的簡單。

以後只要是程式進行內容輸出的時候全部使用列印流。