如何从文本文件中读取x个字符数

时间:2012-11-05 04:43:44

标签: java

如何逐步读取文本文件的20个字符,例如,如果我有一个函数read_next,第一次调用它会返回字符串中的前20个字符,第二次调用它会返回下一个20个字符文件的字符。请注意,我不想将整个文件读入数组然后将其分解。

2 个答案:

答案 0 :(得分: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
}

<强>已更新

经过一些不错的反馈后,您还可以使用Reader

将相同的想法应用于UFT-8编码文件
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...
}

答案 1 :(得分:0)

我会用BufferedReader读一行。它可以是整个文件:( 希望不是。

您可以读取指定数量的字节,但这些字节可以超过字符数(utf-8)