第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

java io流如何讀取文件效率高

java io流如何讀取文件效率高

慕虎7371278 2019-03-26 17:16:43
java io流如何讀取文件效率高
查看完整描述

3 回答

?
四季花海

TA貢獻1811條經驗 獲得超5個贊

java提供了搞笑讀取文件的方式:文件流,下面以FileInputStream和Apache Commons IO流兩種讀取方式來詳細講解:

以下兩種代碼均是讀取一個大約1G的文件:

1、文件流
FileInputStream inputStream = null;
Scanner sc = null;
try {
inputStream = new FileInputStream(path);
sc = new Scanner(inputStream, "UTF-8");
while (sc.hasNextLine()) {
String line = sc.nextLine();
// System.out.println(line);
}
// note that Scanner suppresses exceptions
if (sc.ioException() != null) {
throw sc.ioException();
}
} finally {
if (inputStream != null) {
inputStream.close();
}
if (sc != null) {
sc.close();
}
}
這種方案將會遍歷文件中的所有行——允許對每一行進行處理,而不保持對它的引用??傊疀]有把它們存放在內存中:(大約消耗了150MB內存)

2、Apache Commons IO流
同樣也可以使用Commons IO庫實現(xiàn),利用該庫提供的自定義LineIterator:
LineIterator it = FileUtils.lineIterator(theFile, "UTF-8");
try {
while (it.hasNext()) {
String line = it.nextLine();
// do something with line
}
} finally {
LineIterator.closeQuietly(it);
}
由于整個文件不是全部存放在內存中,這也就導致相當保守的內存消耗:(大約消耗了150MB內存)



查看完整回答
反對 回復 2019-03-29
?
莫回無

TA貢獻1865條經驗 獲得超7個贊

如果你想讀取文本內容,你應該使用InputStreamReader這個類,使用這個類并且指定文本內容的字符集,就可以讀出正確的內容。

InputStream這個類是用來讀取二進制字節(jié)的,比如做文件復制的時候,應該是用InputStream這個類。

不管是InputStreamReader還是InputStream,都可以聲明臨時緩沖數(shù)組,不同的是InputStreamReader聲明的數(shù)組是:char[] cs = new char[1024]

而InputStream聲明的數(shù)組是:byte[] bs = new byte[1024]

查看完整回答
反對 回復 2019-03-29
?
qq_遁去的一_1

TA貢獻1725條經驗 獲得超8個贊

讀取文件行的標準方式是在內存中讀取,Guava 和Apache Commons IO都提供了如下所示快速讀取文件行的方法:

Files.readLines(new File(path), Charsets.UTF_8); FileUtils.readLines(new File(path));
這種方法帶來的問題是文件的所有行都被存放在內存中,當文件足夠大時很快就會導致程序拋出OutOfMemoryError 異常。

查看完整回答
反對 回復 2019-03-29
  • 3 回答
  • 0 關注
  • 1869 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號