0

这是我在这里的第一个问题,希望各位好心的先生能帮助我,我提前谢谢你。

我正在尝试使用线程和复制的工人范式编写一个 Java 项目。我想要做的是创建一个任务工作池。工作人员必须做的任务只是计算指定文件中两个索引之间的单词数。我想创建一个这样的任务:(file,startIndex,finishIndex)。我在找出我应该使用什么文件处理类来打开文件并读取从 startIndex 到 finishIndex 的单词时遇到问题。我还应该提到,我被赋予了一个块大小,我应该使用它来分割任务。ChunkSize 是一个表示字节数的 int

底线:我想从 startIndex 到 startIndex + chunkSize 的文件中读取。

4

1 回答 1

0

我认为您正在寻找RandomAccessFile类。它有一个“seek”方法,可以让你跳到文件中的某个位置。例子:

int chunkSize = 64;
long startingIndex = 55;
byte[] bytesRead = new byte[chunkSize];

RandomAccessFile file = new RandomAccessFile("file.txt", "r");
file.seek(startingIndex);
file.read(bytesRead);
file.close();

请注意,这将寻求一些字节,而不是单词。在阅读之前不可能知道文件中的单词在哪里。计算空格并添加一个是一种天真的方法,在这种情况下会很好用。

于 2012-11-20T22:44:47.840 回答