我需要从具有指定字符集的OFFSET的文本文件中读取char [](size是COUNT)。 COUNT和OFFSET是字符,不是字节。 他是我的代码:从Java中的位置读取文本文件
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;
有没有办法更容易吗? (没有手动匹配字符 - >字节)
我正在寻找java.util.Scanner,但它是Iterator风格,我需要随机访问风格。
PS数据should'n被多次复制
我想** BufferedReader **在读取时使用默认的系统字符集? skip()如何工作(它只是移动文件指针或读取n个字符)? – styanton 2012-04-11 09:31:46
我按照指定字符集的方式添加到答案中。 – dash1e 2012-04-11 09:36:21
如果我第一次需要100-200个字符,那么50-100? – styanton 2012-04-11 09:50:33