序
歡迎來到全網最完整的Java入門系列教程!!!
本教程将包含基礎知識、進階知識、常用架構等,循序漸進地分享Java中必須掌握的知識和技術。建議跟着教程的節奏每天學習一點,你會發現入門Java沒有想象中那麼難。
上一講我們講解了IO檔案讀寫位元組流讀寫的部分,本期就要說一下字元流讀寫。
如果你正在學習Java,不妨收藏這篇文章,或者關注我,定期收獲與Java有關的知識和項目資訊!
Java進階知識前九課的内容,可拉到文章末尾擷取。
接下來就讓我們正式開始分享課程内容吧。
一、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進階知識前九課的内容,可點選下方擷取:
如何優雅的處理異常--Java進階知識講義系列(一)
包裝器類裝箱與拆箱的藝術——Java進階知識講義系列(二)
一文講透Java字元串——Java進階知識講義系列(三)
List的用法和執行個體詳解——Java進階知識講義系列(四)
Set的用法和執行個體詳解——Java進階知識講義系列(五)
Map的用法和執行個體詳解——Java進階知識講義系列(六)
常用集合的排序方法——Java進階知識講義系列(七)
I/O流之File類的用法和執行個體詳解——Java進階知識講義系列(八)
「Java進階」I/O操作必備知識點:位元組流讀寫執行個體講解
結束語
我是專注于開發領域的@老K玩代碼,會持續生産關于如何學習程式設計語言的優質内容。
如果你想學習Java程式設計,或者想精進你的Java程式設計能力,可以關注我。
如果你對開發、程式設計有任何疑問或者有想了解的内容,而我暫時沒有寫到的,也歡迎随時來找我聊聊。
#頭條創作挑戰賽#