天天看點

「Java進階」I/O操作必備知識點:關于字元流讀寫的執行個體講解

作者:老K玩代碼

歡迎來到全網最完整的Java入門系列教程!!!

本教程将包含基礎知識、進階知識、常用架構等,循序漸進地分享Java中必須掌握的知識和技術。建議跟着教程的節奏每天學習一點,你會發現入門Java沒有想象中那麼難。

「Java進階」I/O操作必備知識點:關于字元流讀寫的執行個體講解

上一講我們講解了IO檔案讀寫位元組流讀寫的部分,本期就要說一下字元流讀寫。

如果你正在學習Java,不妨收藏這篇文章,或者關注我,定期收獲與Java有關的知識和項目資訊!

Java進階知識前九課的内容,可拉到文章末尾擷取。

「Java進階」I/O操作必備知識點:關于字元流讀寫的執行個體講解

接下來就讓我們正式開始分享課程内容吧。

一、Writer類

1. 概念

Writer類是一個字元流輸出的抽象類,字元流是特殊的位元組流,常見的子類有:FileWriter、CharArrayWriter等。

2. 輸出字元流-代碼實作

代碼示例(代碼初構):

import java.io.*;

public class IODemo {

    public static void main(String[] args) throws IOException {

        File f = new File("io.txt");
        Writer writer = new FileWriter(f);
        writer.write("老K玩代碼");    // 在目标檔案中寫入文本
        writer.append("\nlord k coding.");    // 在目标檔案中追加文本
        writer.close();    // 關閉對象
    }
}           

說明:

  • 注意:當初始化Writer writer =newFileWriter(f);的時候,f文檔中的内容會被清空;
  • 為展現輸出字元流的代碼主體結果,我們直接将所有異常向上抛出,不過現實中建議用以下方式實作文本寫入。

代碼示例(實操時的完整代碼):

import java.io.*;

public class IODemo {

    public static void main(String[] args) {

        // ① 對象執行個體化
        File f = new File("io.txt");
        Writer writer = null;
        try{
            if (!f.exists()) {
                f.createNewFile();
            }

            // ②讀寫檔案
            writer = new FileWriter(f);
            writer.write("老K玩代碼");    // 在目标檔案中寫入文本
            writer.append("\nlord k coding.");    // 在目标檔案中追加文本

        } catch (IOException e) {
            throw new RuntimeException(e);
        } finally {

            // ③關閉檔案
            try {
                writer.close();    // 關閉對象
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
        }
    }
}           

說明:

  • 讀取f的時候,File指向的檔案路徑可能不存在,是以先用f.exists()方法判斷,若不存在,則f.createNewFile()建立;
  • writer =newFileWriter(f);可能會抛出IOException異常,用try...catch....捕獲;
  • 最後關閉writer時,注意捕獲IOException異常。

二、Reader類

1. 概念

Reader與Writer類相對應,是字元流輸入的抽象類,常見的子類有:FileReader、CharArrayReader等。

2. 輸入字元流-代碼實作

示例代碼(代碼初構):

import java.io.*;

public class IODemo {

    public static void main(String[] args) throws IOException {

        File f = new File("io.txt");
        Reader reader = new FileReader(f);
        int ch = 0;
        while ((ch = reader.read()) != -1) {
            System.out.print((char)ch);
        }
        reader.close();
    }
}           

說明:

  • 對異常作向上抛出處理,僅作為展示代碼主體結構之用,現實中以下例為佳;

代碼示例(實操時的完整代碼):

import java.io.*;

public class IODemo {

    public static void main(String[] args) {

        // ① 對象執行個體化
        File f = new File("io.txt");
        Reader reader = null;
        try {
            reader = new FileReader(f);

            // ②讀寫檔案
            int ch = 0;
            while ((ch = reader.read()) != -1) {
                System.out.print((char)ch);
            }
        } catch (IOException e) {
            throw new RuntimeException(e);
        } finally {

            // ③關閉檔案
            try {
                reader.close();
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
        }

    }
}           

說明:

  • Reader通過read()方法讀取出來的資料是整型數值int,列印需要通過(char)轉型成字元再輸出。

關于字元流讀寫的知識就分享到這裡。

内容不多,和老K一起每天積累一點點,輕輕松松掌握Java知識。

正在學習的小夥伴記得給老K一個贊哦,你的支援是我持續輸出課程内容最大的動力!

「Java進階」I/O操作必備知識點:關于字元流讀寫的執行個體講解

Java進階知識前九課的内容,可點選下方擷取:

如何優雅的處理異常--Java進階知識講義系列(一)

包裝器類裝箱與拆箱的藝術——Java進階知識講義系列(二)

一文講透Java字元串——Java進階知識講義系列(三)

List的用法和執行個體詳解——Java進階知識講義系列(四)

Set的用法和執行個體詳解——Java進階知識講義系列(五)

Map的用法和執行個體詳解——Java進階知識講義系列(六)

常用集合的排序方法——Java進階知識講義系列(七)

I/O流之File類的用法和執行個體詳解——Java進階知識講義系列(八)

「Java進階」I/O操作必備知識點:位元組流讀寫執行個體講解

結束語

我是專注于開發領域的@老K玩代碼,會持續生産關于如何學習程式設計語言的優質内容。

如果你想學習Java程式設計,或者想精進你的Java程式設計能力,可以關注我。

如果你對開發、程式設計有任何疑問或者有想了解的内容,而我暫時沒有寫到的,也歡迎随時來找我聊聊。

「Java進階」I/O操作必備知識點:關于字元流讀寫的執行個體講解

#頭條創作挑戰賽#

繼續閱讀