最终我创建了新的逐行阅读器,它与以前的完全不同。
特点是:
- 基于索引的文件访问(顺序和随机)
- 针对重复随机读取进行了优化(为过去已经导航过的行保存了具有字节偏移量的里程碑),因此在读取所有文件一次后,访问第 43422145 行几乎与访问第 12 行一样快。
- 在文件中搜索:找下一个 and find all.
- 精确的索引、偏移量和匹配长度,以便您可以轻松突出显示它们
检查这个jsFiddle http://jsfiddle.net/3hmee6vb/1/举些例子。
Usage:
// Initialization
var file; // HTML5 File object
var navigator = new FileNavigator(file);
// Read some amount of lines (best performance for sequential file reading)
navigator.readSomeLines(startingFromIndex, function (err, index, lines, eof, progress) { ... });
// Read exact amount of lines
navigator.readLines(startingFromIndex, count, function (err, index, lines, eof, progress) { ... });
// Find first from index
navigator.find(pattern, startingFromIndex, function (err, index, match) { ... });
// Find all matching lines
navigator.findAll(new RegExp(pattern), indexToStartWith, limitOfMatches, function (err, index, limitHit, results) { ... });
性能与之前的解决方案相同。您可以在 jsFiddle 中调用“Read”来测量它。
GitHub: https://github.com/anpur/client-line-navigator/wiki https://github.com/anpur/client-line-navigator/wiki