读取随机访问文件以外的文件中特定行的有效方法-Java

时间:2019-07-15 16:41:47

标签: java randomaccessfile

我想有效地读取Java文件的特定行。

到目前为止,我一直在使用随机访问文件类中的方法public int read(byte[] b)。它的速度很快,但是还有其他任何技术都快得多。

文件有大约200,000多行。我已经收集了每行的偏移量和长度。我在read(byte)方法中使用它。我通常必须阅读大约1-75000特定行。为此需要花费50多个时间。有可能对此进行优化吗?

            RandomAccessFile dicti = new RandomAccessFile(file,"r");
            for(int i:totalLines){
            Long start = getOffset(ID);
            dicti.seek(start);  
            byte[] bytes = new byte[lengthinBytesfortheLine(i)];
            dicti.read(bytes);
            line =new String(bytes);}

1 个答案:

答案 0 :(得分:1)

您可以逐行阅读并执行一些操作。我在下面的示例中提供。

try (Stream<String> stream = Files.lines(Paths.get(yourFileName))) {

            stream.forEach( line -> performSomeOperation(line));

        } catch (Exception e) {
            e.printStackTrace();
        }

performSomeOperation(字符串行)是一种您可以根据需要执行一些操作的方法。