- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要随机访问文本 (ASCII) 文件中的特定记录,然后从那里读取直到找到特定的“停止序列”(记录分隔符)。该文件包含多行记录,每条记录由分隔符分隔。每条记录也需要不同数量的行!这是特定专业领域中众所周知的文件格式,无法更改。
我想为文件编制索引,以便快速跳转到请求的记录。
在类似的问题中
How to Access string in file by position in Java
和其中的链接,答案总是引用各种类的seek()
方法,例如RandomAccessFile
。我知道!
我遇到的问题是如何获得搜索所需的偏移量! (索引文件)
BufferedReader
没有 getFilePointer()
方法或任何其他方法来获取文件开头的当前字节偏移量。 RandomAccessFile
有一个 readLine()
方法,但它的性能非常糟糕。它对我的情况根本不可用。
我需要逐行读取文件,每次找到记录分隔符时我都需要获取字节偏移量。我怎样才能做到这一点?
最佳答案
您可以尝试子类化 BufferedReader
类来记住读取位置。但是您将没有搜索功能。
正如您提到的,一条记录可以是多行的,但所有记录都由一个停止序列分隔。鉴于此,您可以像这样使用 RandomAccessFile
:
有一个字节缓冲区 byte b[]
假设大小为 8k(这是出于性能原因)
从此缓冲区中的文件中读取 8k 并尝试找到分隔符,如果找不到,则读取另一个 8k block ,但之前将数据附加到某个 StringBuilder
或其他结构。
当您找到分隔符时,分隔符的位置由自上次找到分隔符以来处理的字节数给出(您需要做一些简单的数学运算)。
棘手的部分是记录分隔符是否超过 1 个字符,但这应该是个大问题。
关于Java 随机文件访问 : Get byte offset of line start,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18910468/
看来 OFFSET由于性能低下,不建议在处理大记录时使用类似 WHERE id < x LIMIT y 的东西. 如果是这种情况,为什么 OFFSET 存在,它还有其他用途吗? 最佳答案 从概念上讲,
我用过 objdump -M intel -d test 和 objdump -d test 使用 gcc 686-elf 交叉编译器反汇编一个非常简单的 for 循环。在这两种情况下,我都会得到以下
我正在尝试遵循本指南: https://spark.apache.org/docs/latest/structured-streaming-kafka-integration.html但我不明白为什么
我正在尝试遵循本指南: https://spark.apache.org/docs/latest/structured-streaming-kafka-integration.html但我不明白为什么
这个问题已经有答案了: MySQL Data - Best way to implement paging? (9 个回答) 已关闭 3 年前。 我是 SQL 世界的新手。 现在,我有以下查询: SE
托管我的db 的服务器位于美国。当我向 db 添加项目时,我希望使用 Australia/Sydney 时间存储时间。无论用户在哪个国家/地区,如果他们检索此记录,都应使用 Australia/Syd
我有一个 周边其中也有一些图像,和一段文字。 都是inline-block .每当 H2 延伸到两行时,下一个 是抵消。以下是屏幕截图。 HTML:
我正在尝试使用时区偏移量和 UTC 时间戳来调整时间。 我正在运行以下代码: var date = { utc: '2013-10-16T21:31:51', offset: -480
我不应该在我的应用程序中使用 jQuery,但我有一个场景,我需要元素的偏移量,而不是使用 $(element).offset() 我已经使用了 angular.element(element).of
我有一个包含 ID、NAME、PRICE 和 DATE 列的表。 我正在尝试编写一个分页式导航,因为表中有很多条目,所以查看整个 SELECT 的输出变得不舒服。 我写了以下请求: SELECT id
我现在已经多次看到提到的这段代码,执行 Max(a+1, a-1) 有什么意义?一开始我以为可能是为了防止下溢,但是在那种情况下不防止下溢真的没有意义。 最佳答案 谷歌搜索让我怀疑这可能是由某些(可能
我正在尝试创建一种将时间从一个时区转换为另一个时区的小方法。我认为这很简单,但是当我部署它时我得到了这个错误 The UTC Offset of the local dateTime paramete
我有一个相当复杂的 SQL 查询,涉及从大量连接返回大约 20 列,用于在 UI 中填充结果网格。它还使用几个 CTE 来预过滤结果。我在下面包含了查询的近似值(我已经注释掉了修复性能的行) 随着数据
所以我试图减去 datetime 对象。我使用 dateutil.parser 获得了一个,另一个来自 datetime.now()。我不断得到一个 TypeError: can't subtract
所以我试图减去 datetime 对象。我使用 dateutil.parser 获得了一个,另一个来自 datetime.now()。我不断得到一个 TypeError: can't subtract
我有一个 Pandas 数据框: name my_timestamp ------------------------------------------ 0 a1 201
我只是 Bootstrap 4 的初学者。 我最近才开始学习它,很遗憾,我已经遇到了问题。我修改了 Bootstrap 4 手册本身的一些代码。然而,它惨遭失败,偏移量无法正常工作。代码非常简单,但不
我尝试使用 R 进行回归。我有以下代码,导入 CSV 文件没有问题 dat <- read.csv('http://pastebin.com/raw.php?i=EWsLjKNN',sep="
假设我有 search.php 和 edit.php。在 search.php 中,他们可以删除和更新一些记录。如果用户单击“更新”按钮,系统会将用户重定向到另一个名为 edit.php 的页面。我成
我正在使用流行的 css hack 在 Internet Explorer 8 中启用边框半径,可在此处找到:( Curved-corner-border-radius-cross-browser)。
我是一名优秀的程序员,十分优秀!