簡體   English   中英

在Java中,如何一次從文件中迭代多個元素?

[英]In Java, how do I iterate multiple elements at a time from a file?

如何用Java一次讀取一定數量的元素(特別是字符)? 這有點難以解釋,但是我的想法是這樣的:

如果我的文本文件包含:

這是一個名為text.txt的文本文件

我希望能夠有一個遍歷文件的一定長度的字符串或字符數組。 因此,如果我將長度指定為3,則char數組的第一次迭代將包含[T,h,i],並且如果對其進行一次迭代,它將變為[h,i,s],然后成為[i,s] , ], 等等。

我嘗試使用BufferedReader.read(char [],off,len)方法,該方法一次從文件中讀取一定數量的字符,但是性能對於我要執行的操作很重要。

在Java中有什么方法可以實現這一目標嗎? 我試過使用BufferedReader,但我不太熟悉它,無法充分利用它。

通過緩沖輸入流和讀取器,您實際上將獲得最佳的I / O性能。 (僅緩沖一個緩沖區可帶來大部分改進;雙緩沖僅稍好一點,但更好。)下面是示例代碼,可一次讀取一個文件塊:

final int CHUNK_SIZE = 3;
final int BUFFER_SIZE = 8192; // explicit buffer size is better
File file = ...
InputStream is = new BufferedInputStream(new FileInputStream(file), BUFFER_SIZE);
Reader rdr = new BufferedReader(new InputStreamReader(is), BUFFER_SIZE);
char buff = new char[CHUNK_SIZE];
int len;
while ((len = rdr.read(buff)) != -1) {
   // buff[0] through buff[len-1] are valid
}
rdr.close();

當然,這缺少各種錯誤檢查,異常處理等,但是它顯示了緩沖流和讀取器的基本思想。 在構造InputStreamReader時,您可能還需要指定字符編碼。 (您可以首先使用FileReader來繞過輸入流的處理,但隨后您無法指定字符集編碼,並且會失去雙緩沖帶來的輕微性能提升。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM