【问题标题】:Read a specific line form file in Java从 Java 文件中读取特定行
【发布时间】: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 的日志文件,这需要很多内存。

有什么想法吗?

【问题讨论】:

    标签: java io


    【解决方案1】:

    对于您事先不知道行长的标准文本文件,实际上没有办法逐行读取整个文件,例如在this answer 中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-03
      • 1970-01-01
      • 2011-01-09
      • 2014-10-13
      • 1970-01-01
      • 2011-05-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多