我想有效地读取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);}
答案 0 :(得分:1)
您可以逐行阅读并执行一些操作。我在下面的示例中提供。
try (Stream<String> stream = Files.lines(Paths.get(yourFileName))) {
stream.forEach( line -> performSomeOperation(line));
} catch (Exception e) {
e.printStackTrace();
}
performSomeOperation(字符串行)是一种您可以根据需要执行一些操作的方法。