一、Java Reader的介紹
Java Reader是Java IO庫中提供的一款用於讀取字元流的類。和其它的輸入流比較,它不是用來讀取位元組的。 Reader類中提供了很多的方法,可以用來從輸入流中讀取數據、跳過部分數據、查找數據以及關閉輸入流等。
二、Java Reader的基本使用
下面是一個使用JavaReader的例子:
import java.io.FileReader; import java.io.IOException; public class ReaderExample { public static void main(String[] args) { String fileName = "example.txt"; try (FileReader reader = new FileReader(fileName)) { int character; while ((character = reader.read()) != -1) { System.out.print((char) character); } } catch (IOException e) { e.printStackTrace(); } } }
在這個例子中,我們使用了JavaReader從文件” example.txt”中讀取信息。該文件中包含了字元流,Java Reader每次讀取一個字元並輸出,直到讀取完全部字元。如果在讀取的過程中出現了異常,那麼我們將異常信息列印出來。
三、Java Reader的高效讀取
為了提高Java Reader讀取字元流的效率,我們可以加入一個緩存區(Buffer)將數據暫時存起來,然後在一次性讀取。下面是一個如何使用BufferedReader的例子:
import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; public class ReaderExampleWithBuffer { public static void main(String[] args) { String fileName = "example.txt"; try (BufferedReader reader = new BufferedReader(new FileReader(fileName))) { String line; while ((line = reader.readLine()) != null) { System.out.println(line); } } catch (IOException e) { e.printStackTrace(); } } }
在這個例子中,我們通過使用BufferedReader來讀取文件”example.txt”中的字元流。BufferedReader中包含了一個緩存區,可以讀取多個字元,提高了讀取效率。可以看到,通過使用BufferedReader的方式讀取文件,代碼量並不多,而且速度也會更快。
四、Java Reader的過濾器
過濾器是一種可以裝飾已有輸入流的類,可以添加其他的輸入流來加強或調整輸入流的功能。在Java中,Reader類也提供了一系列的過濾器來處理輸入流。下面是一個例子,使用LineNumberReader和InputStreamReader來實現計算輸入流中的行數。
import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.LineNumberReader; public class FilterExample { public static void main(String[] args) { String fileName = "example.txt"; try (LineNumberReader reader = new LineNumberReader( new BufferedReader(new InputStreamReader(new FileReader(fileName))))) { String line; while ((line = reader.readLine()) != null) { System.out.printf("%d\t%s%n", reader.getLineNumber(), line); } } catch (IOException e) { e.printStackTrace(); } } }
在這個例子中,我們使用了兩個過濾器。 BufferedReader用來讀取文本文件中的數據,而LineNumberReader可以計算行數,分別作用在輸入流上。在while循環中,我們先讀取每一行文字,然後使用LineNumberReader來獲取該行文字所在的行數並輸出到控制台上。在這個例子中,通過使用過濾器,我們成功地實現了計算文本文件行數的功能。
五、Java Reader類的關閉
當我們使用完JavaReader後應該關閉它。關閉Reader類可以防止資源泄漏和數據丟失。在Java中,使用try-with-resources結構可以很方便地自動關閉Reader類。下面是一個例子:
import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; public class ReaderExampleWithAutoClose { public static void main(String[] args) { String fileName = "example.txt"; try (BufferedReader reader = new BufferedReader(new FileReader(fileName))) { String line; while ((line = reader.readLine()) != null) { System.out.println(line); } } catch (IOException e) { e.printStackTrace(); } } }
在這個例子中,我們使用了try-with-resources結構來自動關閉Reader。在該結構中,我們只需要在try的括弧中初始化Reader,就可以保證在使用完之後它能夠被自動關閉。這種方式非常簡單並且安全,推薦使用。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/291945.html