问题标签 [randomaccessfile]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 如何覆盖文件中的某些字节?
我使用java.io.File
,创建了一个文件FileInputStream & FileOutputStream
。假设我想更改文件中某些字节的值(例如从字节 15 到 35)而不更改文件的大小。我尝试创建一个RandomAccessFile
对象,然后使用RandomAccessFile.seek
它移动到第 15 个字节,写入我的新字节,然后关闭文件。该文件已更改其大小。这种方法有什么问题,如何成功地做到这一点?
java - Java RandomAccessFile 从开始截断
我知道如何截断 RandomAccess 文件,以便删除末尾的字节。
或者
但是如何截断 RandomAccessFile 以删除开头的字节?我不需要将此文件的内容写入新文件。我用谷歌搜索并找不到答案。请帮忙。提前致谢。
java - 为什么改变初始化 RandomAccessFile 对象的方式会改变 FileChannel 的性能?
我正在研究将一些在磁盘上出现瓶颈的代码重写到 java 中的可能性。javadoc 没有说明为什么下面的前两个代码循环与后两个循环的执行方式如此不同:
运行此代码会产生如下内容:
如您所见,这会使c.force(true)
事情变慢一点。为什么在使用RandomAccessFile
“rwd”模式时事情会更慢。不应该“rwd”并且c.force(true)
是等效的。
java - 用 Java 创建大文件 (2gb+)
我目前正在开发一个创建大型随机二进制文件(2gb 到 10gb)的项目,但我无所适从。显然,写出 10gb 的数据需要很长时间,我需要一个及时的方法。我最新的想法是创建一个随机访问文件并将大小设置为 2+ gb,但似乎 .setLength 函数无法处理那么大的大小。我还考虑过将一个文件附加到另一个文件以获得足够大的文件,但似乎也没有真正好的方法可以快速做到这一点。有什么想法吗?
java - 无法释放 Java FileLock
我没有与 nio 合作太多,并且在发布 FileLock 时遇到了一些麻烦。基本上,在 JVM-A 中,我在一个看起来像这样的文件上有一个不可共享的写锁:
然后在 JVM-B 中,我尝试在同一个文件上创建一个共享读锁,看起来像这样:
我的问题是 JVM-B 永远循环并且永远不会获得可共享的读锁。即使 JVM-A 存在writeLock.release();
writeChannel.close();
并且writeFile.close();
即使 JVM-A 退出并且不再运行,JVM-B 仍然无法获得文件的可共享读锁。
那么我在这里错过了什么?
java - 在文件中搜索字符串并在上面插入内容
我尝试在 txt 文件中搜索字符串并在其上方插入一些特定内容。可悲的是,输出看起来与我的预期完全不同。
有人可以给我一个提示吗?
这就是我有多远!
这是我尝试阅读的文件:
这就是我希望得到的
java - 读取外部日志文件而不创建文件锁
尝试逐行读取日志文件(在 Java 中)。另一个进程(非 java 程序)正在同时写入此日志文件。
我有两种方法-
- BufferedReader (BufferedReader br = new BufferedReader(new FileReader(logFile));)
- RandomAccessFile (RandomAccessFile accessFile = new RandomAccessFile(logFile.getAbsolutePath(), "r");)
这两种方法是否都会导致文件被锁定,直到我在 BufferedReader/RandomAccessFile 对象上调用“关闭”方法?
是否有任何其他方式(Java)以不为其他进程/程序锁定/阻止文件的方式读取文件?
PS - 在我所有的搜索中,我遇到了这个问题的多个答案/解决方案(旧的和新的)。我只是想就这个问题寻求澄清/结束。
java - 在大文件中搜索字符串并将其保存在 Java 中的位置
我正在寻找一种方法来解析大文件(大约 5-10Go)并尽可能快地搜索一些循环字符串的位置(以字节为单位)。
我尝试通过执行以下操作来使用 RandomAccessFile 阅读器:
问题是这段代码太慢了(可能是因为我逐字节读取?)。
我还尝试了下面的解决方案,它在速度方面非常完美,但我无法获得我的字符串的位置。
有没有人可以提出更好的解决方案?
提前谢谢你(对不起我的拼写,我是法国人)
java - Java中的随机访问文件和额外的ASCII字符
我有一个充满字符串的随机访问文件(我知道它们不是真正的字符串,尽管它会帮助我解释问题)。我想做的是查看某个字符串,比如说字符串#4。虽然对于整数和通常的原始数据类型来说这很简单,因为它们具有固定的字节长度,我可以通过总结所有先前的字节来读取正确的字节。
我设法通过给所有字符串一个 16 个字符的固定长度来解决这个问题,所以如果我有“狗”这个词,那么 RAF 中的这个词是“狗”(狗 + 13 个空格)并且字节长度是也固定了。同样,我可以使用以下方法轻松读取正确的值:
其中n是我要读取的值的数量,而fix是一个字符串的字符数(和字节数)。
一切似乎都很好,直到我在其中一个字符串中使用了一个额外的 ASCII 字符——一个波兰字母——因为它由 2 个字节组成。字符长度仍然相同 - 16,但有 17 个字节,整个事情都崩溃了。
我能做些什么?
java - 从具有不同编码的文件中读取带有 RandomAccessFile 的字符串
我有一个编码为 1250 的大文件。行只是一个接一个的波兰语:
我需要以一种非常快速的方式从这个文件中随机选择 10 行唯一的行。我这样做了,但是当我打印这些单词时,它们的编码错误 [zaj?c, dzie?o, kiepsko...],我需要 UTF8。所以我改变了我的代码来从文件中读取字节而不仅仅是读取行,所以我的努力最终得到了这个代码:
但有些不对劲。你能看看这段代码并帮助我吗?也许您看到了一些明显的错误,但对我来说并不明显?我将不胜感激。