【问题标题】:Determine Line Number from Byte Offset in a text file从文本文件中的字节偏移量确定行号
【发布时间】:2012-11-28 16:15:44
【问题描述】:

我目前有一种情况,我知道文本文件的字节偏移量。我想知道无论如何我可以从字节偏移量中确定行号。文本文件中的记录不是固定长度的,在这种情况下,我会将偏移量除以宽度。

【问题讨论】:

    标签: java io


    【解决方案1】:

    除非所有行的长度一致,否则无法从字节偏移量确定行号。但是,您可以扫描换行符并跟踪它们以计算文件中的偏移量。

    【讨论】:

      【解决方案2】:

      你可以这样做;

      String fullTextFile = loadTextFile();
      String section = fullTextFile.substring(0, byteOffset);
      String reduced = section.replaceAll("[^\n]*","");
      int lineNumber = reduced.length();
      

      我不完全确定该正则表达式是否合法,但它不需要太多调整。

      【讨论】:

      • 确实如此,另一种方法是使用ReaderreadLine() 直到你达到字节偏移量,一边计算行数。
      • 是的,我无法将文件加载到内存中。我正在使用 hadoop 来处理这个大文本文件,它会随记录一起吐出偏移量。我想知道我是否可以以这种方式跟踪行号,但看起来这是不可能的。可能我必须考虑另一种方法,而不是对所有偏移进行排序,这将非常低效
      猜你喜欢
      • 2014-04-03
      • 2012-11-30
      • 1970-01-01
      • 1970-01-01
      • 2013-01-03
      • 2016-12-27
      • 1970-01-01
      • 2013-07-14
      • 2017-11-15
      相关资源
      最近更新 更多