2012-11-05 82 views
0

如何逐步讀取20個文本文件的字符,例如,如果我有一個函數read_next,第一次調用它將返回字符串中的前20個字符,第二次調用它將返回文件的下20個字符。請注意,我不想將整個文件讀入數組,然後將其分解。如何從文本文件中讀取x個字符

回答

1

基本上,要使用InputStream#read(byte[])

讀取從輸入流一定數量的字節,並將其存儲到 緩衝數組b。字節的實際讀取的返回 整數

public int read(InputStream is, byte[] bytes) throws IOException { 
    return is.read(bytes); 
} 

那麼你基本上要調用此方法

byte[] bytes = new byte[20]; 
int bytesRead = -1; 
while ((bytesRead = read(is, bytes)) != -1) { 
    // Process the bytes.. 
    // Note, while bytes.length will always == 20 
    // there will only ever be bytesRead worth of 
    // values in the array 
} 

數...更新

一些很好的反饋意見後, ,您也可以將相同的想法應用於UFT-8編碼文件,使用Reader

public int read(Reader reader, char[] chars) throws IOException { 
    return reader.read(chars); 
} 

,並調用方法,這樣......

Reader reader = new InputStreamReader(new FileInputStream("file"), "UTF-8"); 
char[] chars = new char[20]; 
int charsRead = -1; 
while ((charsRead = read(reader, chars)) != -1) { 
    // Process chars, the same caveats apply as above... 
} 
+2

更多滿足您的需求,如果UFT-8,則不是:D – 2012-11-05 04:53:18

+0

@matheszabi公平點。實際要求有點模糊,因爲它沒有指定如何讀取字符('InputStream'或'Reader')+1發表您的評論 – MadProgrammer

0

我會用一個BufferedReader讀取一行。它可以是整個文件:( 但願不是。

可以讀取指定的字節數量,但如果僅僅是ASCII字符,超過此方法的可以比字符(UTF-8)

相關問題