我需要使用指定的字符集从 OFFSET 的文本文件中读取 char[](大小为 COUNT)。COUNT 和 OFFSET 是字符,而不是字节。他是我的代码:
raf = new RandomAccessFile(filePath, "r");
if ((mBuffer == null) || (mBuffer.length < count)) {
mBuffer = new byte[(int)(count/mDecoder.averageCharsPerByte())];
mByteWrap = ByteBuffer.wrap(mBuffer);
mCharBuffer = new char[count];
mCharWrap = CharBuffer.wrap(mCharBuffer);
}
try {
offset = (int)(offset/mDecoder.averageCharsPerByte());
count = (int)(count/mDecoder.averageCharsPerByte());
raf.seek(offset);
raf.read(mBuffer,0,count);
mByteWrap.position(0);
mCharWrap.position(0);
mDecoder.decode(mByteWrap, mCharWrap, true);
} catch (IOException e) {
return null;
}
return mCharBuffer;
有没有更简单的方法?(无需手动匹配 char->byte)
我正在寻找 java.util.Scanner,但它是 Iterator 风格的,我需要随机访问风格。
PS数据不应该被复制多次