gpt4 book ai didi

java - 设置从 Reader 读取的字符限制

转载 作者:行者123 更新时间:2023-11-30 05:57:54 25 4
gpt4 key购买 nike

我正在尝试实现一个多线程文件读取器,其中每个线程从同一文件读取一大块字节。我在每个线程中初始化 Reader 并相应地skip,但我的 Reader 被另一个库使用,(CsvMapReader )并且我希望一个线程只读取chunk字节。如何确保传递给 CsvMapReaderReader 对象只能读取 chunk 字节,直到 EOF 为止。

示例:

Thread reader = new Thread(() -> {
BufferedReader br = new BufferedReader("large_file");
br.skip(chunkSize);
CsvMapReader leftFileReader = new CsvMapReader(br, filePreference);
while (csvMapReader.read() != null) { /* This loop should only iterate until chunksize bytes are processed, and no more */
// do something
}
})
reader.start();

假设,我有多个线程,每个线程都会跳过一些 chunkSize 的倍数。基本上我只想循环直到 chunkSize 字节被处理。

最佳答案

您可以尝试类似下面的代码。您可以使用计数器变量来对读取的字符进行计数,并且只读取直到达到 chunkSize。另外,我假设你的 chunkSize 是 字符大小,因为您使用的是 Reader 而不是 inputStream。

    Thread reader = new Thread(() -> {
BufferedReader br = new BufferedReader("large_file");
br.skip(chunkSize);
CsvMapReader leftFileReader =
new CsvMapReader(br, filePreference);
int chunkSizeCounter=0;
while (csvMapReader.read() != null &&
chunkSizeCounter< chunkSize ) {
// do something
chunkSizeCounter++;
}
})
reader.start();

您还可以读取每个线程的特定行,而不是读取每个线程的特定字节或字符。当您读取行时,您对大小进行的检查较少,并且可能会更快一点

关于java - 设置从 Reader 读取的字符限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52845217/

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