【发布时间】:2021-03-17 10:41:33
【问题描述】:
我真的不想做一个重复的问题,但是关于 SO 的答案都不能在我的问题中实现。
这个问题的答案:
How to read a file from a certain offset in Java?
使用 RandomAccessFile,但我发现的实现需要所有文件行具有相同的长度。
我怎样才能得到 List lines = readLinesFromLine(file);?
我试过了
private static List<String> readRandomAccessFile(String filepath, int lineStart, int lineEnd, int charsPerLine, String delimiter) {
File file = new File(filepath);
String data = "";
int bytesPerLine = charsPerLine+2;
try{
RandomAccessFile randomAccessFile = new RandomAccessFile(file, "r");
for (int i = lineStart; i <lineEnd ; i++) {
randomAccessFile.seek(bytesPerLine *i);
data = randomAccessFile.readLine();
dialogLineRead.add(data);
}
randomAccessFile.close();
}catch (Exception e){
e.printStackTrace();
}
String returnData = "";
for (int i = 0; i < dialogLineRead.size(); i++) {
returnData += dialogLineRead.get(i);
returnData+=delimiter;
}
return returnData;
但就像我说的 charsPerLine 对于每一行都必须相同。
我试图计算文件中每一行的字符数,并将其存储在一个列表中,但是使用 2gb 的日志文件,这需要很多内存。
有什么想法吗?
【问题讨论】: