Java使用FileReader讀取文件詳解
前言
在Java編程中,經(jīng)常需要讀取文件的內(nèi)容,這時我們需要使用FileReader類。FileReader是Java IO庫中的一個用于讀取字符流的類,它繼承自InputStreamReader。
摘要
本文將介紹FileReader類的基本用法,包括如何創(chuàng)建FileReader對象,如何讀取文件,以及如何關(guān)閉流。文章將通過示例演示FileReader類的使用,在代碼中將有詳細的注釋說明,方便讀者理解。
正文
創(chuàng)建FileReader對象
在使用FileReader類讀取文件之前,我們需要先創(chuàng)建FileReader對象。創(chuàng)建FileReader對象的方法如下:
FileReader reader = new FileReader("path/to/file");
這里的"path/to/file"是文件的路徑,可以是相對路徑或絕對路徑。如果文件路徑不正確或文件不存在,將會拋出FileNotFoundException異常。
讀取文件
FileReader類提供了多種方法用于讀取文件,其中最常用的方法是read()。read()方法可以讀取一個字符。示例代碼如下:
FileReader reader = new FileReader("path/to/file"); int data = reader.read(); while (data != -1) { char ch = (char) data; System.out.print(ch); data = reader.read(); }
上面的代碼中,將會逐個字符讀取文件并打印出來。在讀取文件時,read()方法返回的是字符的ASCII碼。如果已經(jīng)到達文件的末尾,read()方法將會返回-1。
除了read()方法之外,F(xiàn)ileReader類還提供了其他多種方法用于讀取文件,如read(char[] cbuf)、read(char[] cbuf, int off, int len)等。這些方法可以一次性讀取多個字符。
關(guān)閉流
在使用完FileReader流之后,我們需要關(guān)閉流以釋放系統(tǒng)資源。關(guān)閉流的方法如下:
reader.close();
關(guān)閉流之后,將無法再從流中讀取數(shù)據(jù)。
讀取文件的注意事項
使用FileReader時,需要注意以下幾點:
- 需要手動關(guān)閉FileReader對象,否則會占用過多的系統(tǒng)資源。
- FileReader類默認使用系統(tǒng)默認編碼來讀取文件,如果文件的編碼格式不是默認編碼格式,可能會導(dǎo)致讀取到的數(shù)據(jù)出現(xiàn)亂碼。
- 如果要讀取比較大的文件,建議使用BufferedReader進行緩存,加快讀取速度。
示例代碼
下面是一個完整的示例代碼,其中實現(xiàn)了讀取文件、關(guān)閉流等功能。
package com.example.javase.io; import org.junit.Test; import org.springframework.boot.test.context.SpringBootTest; import java.io.FileReader; import java.io.IOException; /** * @date 2023/9/12 15:57 */ @SpringBootTest public class FileReaderTest { @Test public void fileReaderTest() throws IOException { FileReader reader = null; reader = new FileReader("./template/hello.txt"); int data = reader.read(); while (data != -1) { char ch = (char) data; System.out.print(ch); data = reader.read(); } } }
示例代碼執(zhí)行結(jié)果如下:
讀取文件截圖如下:
方法介紹
方法 | 描述 |
---|---|
public FileReader(String fileName) throws FileNotFoundException | 創(chuàng)建FileReader對象 |
public int read() throws IOException | 讀取一個字符 |
public int read(char[] cbuf) throws IOException | 讀取多個字符到緩沖區(qū) |
public int read(char[] cbuf, int off, int len) throws IOException | 讀取多個字符到緩沖區(qū),從指定的偏移量開始 |
public void close() throws IOException | 關(guān)閉流 |
測試用例
我們可以編寫一些簡單的測試用例,測試FileReader類的基本功能。
package com.example.javase.io; import org.junit.After; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.springframework.boot.test.context.SpringBootTest; import java.io.FileReader; import java.io.IOException; /** * @date 2023/9/12 15:57 */ @SpringBootTest public class FileReaderTest { private FileReader reader; @Before public void setUp() throws Exception { reader = new FileReader("./template/hello.txt"); } @After public void tearDown() throws Exception { if (reader != null) { reader.close(); } } @Test public void testRead() throws IOException { int data = reader.read(); Assert.assertEquals(data, 104); } @Test public void testReadCharArray() throws IOException { char[] cbuf = new char[4]; int len = reader.read(cbuf); Assert.assertEquals(len, 4); //cbuf:[h,e,l,l] Assert.assertEquals(cbuf[0], 'h'); } @Test public void testReadCharArrayOffLen() throws IOException { char[] cbuf = new char[4]; int len = reader.read(cbuf, 1, 2); //cbuf:[,h,e,] Assert.assertEquals(len, 2); Assert.assertEquals(cbuf[1], 'h'); } }
執(zhí)行結(jié)果如下:
全文小結(jié)
本文主要介紹了Java中的FileReader類,包括如何創(chuàng)建FileReader對象、如何讀取文件以及如何關(guān)閉流等內(nèi)容。通過示例代碼,我們可以更好地理解FileReader類的使用方法。
到此這篇關(guān)于Java使用FileReader讀取文件詳解的文章就介紹到這了,更多相關(guān)Java FileReader讀取文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
初識sa-token及登錄授權(quán)簡單實現(xiàn)
這篇文章主要為大家介紹了sa-token及登錄授權(quán)簡單實現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-07-07詳解SpringBoot 創(chuàng)建定時任務(wù)(配合數(shù)據(jù)庫動態(tài)執(zhí)行)
本篇文章主要介紹了SpringBoot 創(chuàng)建定時任務(wù)(配合數(shù)據(jù)庫動態(tài)執(zhí)行),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-10-10JAVA中JSONObject對象和Map對象之間的相互轉(zhuǎn)換
這篇文章主要介紹了JAVA中JSONObject對象和Map對象之間的相互轉(zhuǎn)換,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01SpringKafka消息發(fā)布之KafkaTemplate與事務(wù)支持功能
通過本文介紹的基本用法、序列化選項、事務(wù)支持、錯誤處理和性能優(yōu)化技術(shù),開發(fā)者可以構(gòu)建高效可靠的Kafka消息發(fā)布系統(tǒng),事務(wù)支持特性尤為重要,它確保了在分布式環(huán)境中的數(shù)據(jù)一致性,感興趣的朋友一起看看吧2025-04-04Spring Boot自定義配置屬性源(PropertySource)
這篇文章主要介紹了Spring Boot自定義配置屬性源(PropertySource),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-06-06