1. 程式人生 > 其它 >IO框架(八)列印流、轉換流

IO框架(八)列印流、轉換流

IO框架(八)列印流、轉換流

目錄

列印流:PrintWriter

特點

  • 封裝了print()/println()方法,支援寫入後換行
  • 支援資料原樣列印

方法

Modifier and Type Method and Description
PrintWriter append(char c) 將指定的字元附加到此作者。
PrintWriter append(CharSequence csq) 將指定的字元序列附加到此作者。
PrintWriter append(CharSequence csq, int start, int end) 將指定字元序列的子序列附加到此作者。
boolean checkError() 如果流未關閉,請重新整理流並檢查其錯誤狀態。
protected void clearError() 清除此流的錯誤狀態。
void close() 關閉流並釋放與之相關聯的任何系統資源。
void flush() 重新整理流。
PrintWriter format(Locale l, String format, Object... args) 使用指定的格式字串和引數將格式化的字串寫入此寫入程式。
PrintWriter format(String format, Object... args) 使用指定的格式字串和引數將格式化的字串寫入此寫入程式。
void print(boolean b) 列印布林值。
void print(char c) 列印一個字元
void print(char[] s) 列印字元陣列。
void print(double d) 列印雙精度浮點數。
void print(float f) 列印浮點數。
void print(int i) 列印一個整數。
void print(long l) 列印一個長整數。
void print(Object obj) 列印一個物件。
void print(String s) 列印字串。
PrintWriter printf(Locale l, String format, Object... args) 使用指定的格式字串和引數將格式化的字串寫入該writer的方便方法。
PrintWriter printf(String format, Object... args) 使用指定的格式字串和引數將格式化的字串寫入該writer的方便方法。
void println() 通過寫入行分隔符字串來終止當前行。
void println(boolean x) 列印一個布林值,然後終止該行。
void println(char x) 列印一個字元,然後終止該行。
void println(char[] x) 列印字元陣列,然後終止行。
void println(double x) 列印雙精度浮點數,然後終止行。
void println(float x) 列印一個浮點數,然後終止該行。
void println(int x) 列印一個整數,然後終止該行。
void println(long x) 列印一個長整型,然後終止行。
void println(Object x) 列印一個物件,然後終止該行。
void println(String x) 列印一個字串,然後終止行。
protected void setError() 表示發生錯誤。
void write(char[] buf) 寫入一個字元陣列。
void write(char[] buf, int off, int len) 寫一個字元陣列的一部分。
void write(int c) 寫一個字元
void write(String s) 寫一個字串
void write(String s, int off, int len) 寫一個字串的一部分。

舉例

public class Demo08 {
    public static void main(String[] args) throws Exception{
        PrintWriter pw  = new PrintWriter("D:\\練習3.txt");
        pw.println(97);
        pw.println(true);
        pw.println(3.14);
        pw.println('a');
        pw.close();
        System.out.println("執行完畢");
    }
}

轉換流

橋轉換流:

  • InputStreamReader/OutputStreamWriter
    • 可將位元組流轉換為字元流
    • 可設定字元的編碼方式

InputStreamReader

方法
Modifier and Type Method and Description
void close() 關閉流並釋放與之相關聯的任何系統資源。
String getEncoding() 返回此流使用的字元編碼的名稱。
int read() 讀一個字元
int read(char[] cbuf, int offset, int length) 將字元讀入陣列的一部分。
boolean ready() 告訴這個流是否準備好被讀取。
舉例1
public class DEMO09 {
    public static void main(String[] args) throws Exception{
        FileInputStream fis = new FileInputStream("D:\\練習2.txt");
        InputStreamReader isr = new InputStreamReader(fis,"utf-8");//寫上編碼方式
        int data=0;
        while ((data=isr.read())!=-1){
            System.out.print((char)data);
        }
        isr.close();
    }
}
//輸出:
加油史小鵬!
加油史小鵬!
加油史小鵬!
加油史小鵬!
加油史小鵬!
加油史小鵬!
加油史小鵬!
加油史小鵬!
加油史小鵬!
加油史小鵬!

OutputStreamWriter

方法
Modifier and Type Method and Description
void close() 關閉流,先重新整理。
void flush() 重新整理流。
String getEncoding() 返回此流使用的字元編碼的名稱。
void write(char[] cbuf, int off, int len) 寫入字元陣列的一部分。
void write(int c) 寫一個字元
void write(String str, int off, int len) 寫一個字串的一部分。
舉例1
public class Demo10 {
    public static void main(String[] args) throws Exception{
        FileOutputStream fos = new FileOutputStream("D:\\練習4.txt");
        OutputStreamWriter osw = new OutputStreamWriter(fos,"gbk");
        //寫入
        for (int i=0;i<10;i++){
             osw.write("史小鵬Yes!\n");
             osw.flush();
        }
        osw.close();
        fos.close();
        System.out.println("完成");
    }
}