JAVA讀取文本文件內(nèi)容實(shí)例代碼
java讀取文本文件內(nèi)容
今天寫代碼寫著要調(diào)試一個(gè)很長(zhǎng)的字符串,就用idea新建了text文本,存放長(zhǎng)字符串的內(nèi)容。結(jié)果發(fā)現(xiàn)讀取文本文件內(nèi)容的java代碼不怎么會(huì)寫了,果然是面向百度編程,面向control c 或者control v編程,尷尬。
最終的代碼如下:
public static String readFileContent(String fileName) {
File file = new File(fileName);
BufferedReader reader = null;
StringBuffer sbf = new StringBuffer();
try {
reader = new BufferedReader(new FileReader(file));
String tempStr;
while ((tempStr = reader.readLine()) != null) {
sbf.append(tempStr);
}
reader.close();
return sbf.toString();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
return sbf.toString();
}
留個(gè)小問題,這種方式只能讀取普通的文本文件,對(duì)于二進(jìn)制之類的文件,是不可以的,那應(yīng)該如何做呢,嗯,等碰到這樣場(chǎng)景的需求再記錄下來(lái)吧。
Java一次讀取文本文件所有內(nèi)容
我們做文本處理的時(shí)候的最常用的就是讀寫文件了,尤其是讀取文件,不論是什么文件,我都傾向于一次性將文本的原始內(nèi)容直接讀取到內(nèi)存中再做處理,當(dāng)然,這需要你有一臺(tái)大內(nèi)存的機(jī)器,內(nèi)存不夠者……可以一次讀取少部分內(nèi)容,分多次讀取。
讀取文件效率最快的方法就是一次全讀進(jìn)來(lái),很多人用readline()之類的方法,可能需要反復(fù)訪問文件,而且每次readline()都會(huì)調(diào)用編碼轉(zhuǎn)換,降低了速度,所以,在已知編碼的情況下,按字節(jié)流方式先將文件都讀入內(nèi)存,再一次性編碼轉(zhuǎn)換是最快的方式,典型的代碼如下:
public String readToString(String fileName) {
String encoding = "UTF-8";
File file = new File(fileName);
Long filelength = file.length();
byte[] filecontent = new byte[filelength.intValue()];
try {
FileInputStream in = new FileInputStream(file);
in.read(filecontent);
in.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
try {
return new String(filecontent, encoding);
} catch (UnsupportedEncodingException e) {
System.err.println("The OS does not support " + encoding);
e.printStackTrace();
return null;
}
}
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
jboss( WildFly)上運(yùn)行 springboot程序的步驟詳解
這篇文章主要介紹了jboss( WildFly)上運(yùn)行 springboot程序的步驟詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-02-02
基于ThreadLocal 的用法及內(nèi)存泄露(內(nèi)存溢出)
這篇文章主要介紹了基于ThreadLocal 的用法及內(nèi)存泄露(內(nèi)存溢出),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-10-10
idea?maven?經(jīng)常主目錄自動(dòng)變回默認(rèn)的解決方法
很多朋友反映idea?maven?經(jīng)常主目錄自動(dòng)變回默認(rèn),遇到這樣的問題真的很頭疼,該如何解決呢?下面小編給大家介紹下idea?maven目錄變回默認(rèn)的解決方法,需要的朋友可以參考下2022-08-08
教你用Java實(shí)現(xiàn)一個(gè)簡(jiǎn)單的代碼生成器
今天給大家?guī)?lái)的是關(guān)于Java的相關(guān)知識(shí),文章圍繞著如何用Java實(shí)現(xiàn)一個(gè)簡(jiǎn)單的代碼生成器展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下2021-06-06
SpringBoot實(shí)現(xiàn)動(dòng)態(tài)定時(shí)任務(wù)
這篇文章主要為大家詳細(xì)介紹了SpringBoot實(shí)現(xiàn)動(dòng)態(tài)定時(shí)任務(wù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-04-04
通過(guò)MyBatis讀取數(shù)據(jù)庫(kù)數(shù)據(jù)并提供rest接口訪問
這篇文章主要介紹了通過(guò)MyBatis讀取數(shù)據(jù)庫(kù)數(shù)據(jù)并提供rest接口訪問 的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-08-08

