gpt4 book ai didi

java - 从Java中的位置读取文本文件

转载 作者:行者123 更新时间:2023-12-02 15:48:11 25 4
gpt4 key购买 nike

我需要从具有指定字符集的 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,但它是迭代器样式,我需要随机访问样式。

PS数据不应该被复制多次

最佳答案

使用 BufferedReader 的 skip()方法。对于您的情况:

BufferedReader reader = new BufferedReader(new FileReader(filePath));
reader.skip(n); // chars to skip
// .. and here you can start reading

如果您想指定可以使用的特定编码

InputStream is = new FileInputStream(filePath);
BufferedReader reader = new BufferedReader(new InputStreamReader(is,"UTF-8"));
reader.skip(n); // chars to skip
// .. and here you can start reading

关于java - 从Java中的位置读取文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10102703/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com