问题标签 [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.

0 投票
2 回答
4109 浏览

java - 在二进制流中搜索字符串(作为字节 [])

嗨团队,我正在尝试在二进制文件中查找字符串“Henry”并将字符串更改为不同的字符串。仅供参考,该文件是对象序列化的输出。原始问题在这里

我是搜索字节的新手,并想象这段代码会搜索我的 byte[] 并交换它。但它并没有接近工作它甚至没有找到匹配项。


好的,我看到了bytesHenry==seekHenry问题,将换到Arrays.equals( bytesHenry , seekHenry )

我想我每次读取 5 个字节时都需要移动 -4 个字节的位置。


宾果游戏它现在找到了

0 投票
3 回答
831 浏览

java - 在 java 中使用 RandomAccessFile 写入非英文字符

我正在尝试使用 RandomAccessFile 对象将一些文本写入文件,但非英语字符未正确保存。

具体来说,这句话 --> "und NotenstEnder Libero"

像这样保存 --> "und Notenst•nder Libero"

其中'E'字符不是英文(我认为ascii代码是917)。

我正在使用的代码是这样的:

我怎样才能避免这种情况并写出正确的文字?

(PS:我知道file.writeChars,我想知道是否还有其他方法!)

0 投票
2 回答
9284 浏览

java - RandomAccessFile 类如何使用 randomAccessFile.read() 方法返回字节;

我正在使用谷歌翻译,我希望这个问题很好理解。

有一件事我不了解随机访问文件。不了解程序是如何工作的,但它可以工作。

这是我的程序:

在第 1 行中,我在 read 中访问文件 在第 2 行中,我创建了一个与文件大小相同的字节数组对象 在第 3 行中读取字节数组

但绝不会转储字节数组上的文件。

我认为该程序应类似于:

java文档说:

只返回字节数而不是字节数。

有人可以向我解释这一行如何使用此语句转储 byte [] 变量文档中的字节?

谢谢!!

//------------------------------------------------ ------------------------------

另一个例子:

我将此方法与 BufferedReader 进行比较:

BufferedReader 读取一行并将其传递给一个字符串。

我可以看到这个将文件内容传递给变量的 java 语句。

但我没有看到其他声明:

刚刚阅读,内容不会在任何地方通过该行...

0 投票
1 回答
742 浏览

java - 使用 RandomAccessFile 将数据写入文件

我正在使用 RandomAccessFile 写入文件。数据(字段)以固定的字段长度存储,例如,每个字段将分配 16 个字节的空间。我通过使用 seek() 将指针指向适当的位置来写一些东西。当我覆盖某些字段时出现问题,即,如果“Bangalore”存储较早,如果用“Delhi”覆盖它,结果是“Delhilore”。在写“Delhi”之前如何完全删除“Bangalore”?

如果值是我要写的字符串,长度是固定字段长度(16)

0 投票
1 回答
1566 浏览

java - 从 ObjectInputStream 读取数据时获取文件指针位置

从二进制文件中读取时,我需要获取当前的文件指针位置(以字节为单位)。我使用 编写文件ObjectOutputStream,现在我需要读取它并记住每个对象的字节位置。

但是:ObjectInputStream不提供读取指针位置的方法,并且RandomAccessFile无法读取对象:(


如果您认为有办法,甚至是解决方法,这些额外信息可能会有所帮助:

我已将 ID 存储在我的文件中。每个 ID 至少列出一个节点(可以是多个节点)。全部作为长值。

例如:

每个 ID 都是一个单独的对象,它将 id 值本身存储为 long 值,节点存储为ArrayList<Long>.

第二个文件存储节点并列出每个节点的父 ID。像这样:

背后的想法是:每当我知道一个 ID 并想知道有关节点的信息时,我都会查看哪个节点位于节点文件中的特定位置。每当我知道节点并想进一步了解其父 ID 时,我都会查看 ID 文件中的具体位置。

然而,目前我只是将 ID 和节点值本身写入文件中,使用它们作为“索引”。

如果那是我要查找的 ID,我不想逐行查看,因为这些文件可能会变得非常大(GB 大小)。如果我记住另一个文件的字节位置而不是行索引左右会更容易,因为我可以使用 skip() 或类似方法简单地跳转到它。


结论:如何在读取时从下一个对象的开头获取文件指针位置(以字节为单位)ObjectInputStream

0 投票
1 回答
1017 浏览

java - linux下的Java RandomAccessFile.java不能正常工作

我试图在 java 中实现简单的 tail -f linux 命令。这是我的代码。

问题是在 linux 操作系统下,file.read(bytes, 0, size) 总是返回 -1,而在 Windows 下,相同的代码片段工作得很好(总是打印新行)。

编辑:

我通过raFile = new RandomAccessFile(file, "r");在每次迭代中添加来解决问题。

不知道为什么,但现在在 Linux 下也可以正常工作。谢谢你们的努力

0 投票
2 回答
1102 浏览

java - 使用 RandomAccessFile 删除文件内容

我有一个包含很多零的文件,根据要求,文件中的零无效。我正在使用RandomAccessFile api 来定位文件中的数据。有没有办法可以使用相同的api从文件中删除所有零。

0 投票
2 回答
58 浏览

java - 试图覆盖文件中间的数据而不影响文件的开头

我有一个算法可以乱序计算向量的分量(字节)。我将向量存储在一个文件中,因为当我真正运行它时,向量将是数百万字节长。但作为一个简化的例子,我想从一个空文件开始:

-1 -1 -1 -1 -1 -1 -1 -1

然后我的算法将一次填写两个值:

-1 -1 4 7 -1 -1 -1 -1

然后

-1 -1 4 7 -1 -1 3 9

等,直到所有的值都被填写。这可能吗?我尝试过使用随机访问文件,但是当您使用 seek() 方法时,它会在我要编辑的值之前为所有值填充 0,从而删除我的算法之前所做的任何计算。由于我需要这个程序来处理大量的数字序列,所以不能将整个文件拉入内存。有任何想法吗?

0 投票
1 回答
292 浏览

java - 如何使用 RandomAccessFile 从文件中读取字符串?

我的文件内容包含四列

001 迈克 1122 98
002 斯蒂芬 1232 97

使用RandomAccessFile我需要将每一列存储在其各自的数组类型中。

readInt() 用于读取第 1 列的整数

我如何读取字符串(第 2 列)以存储在字符串数组中?

0 投票
2 回答
1467 浏览

java - Persisting B-Tree nodes to RandomAccessFile

My project is trying to write a B-Tree. I am having trouble persisting nodes of the tree to a random access file. I am constantly encountering EOFexceptions and StreamCorruptionExceptions.

some resources that I am currently using are:

Converting any object to a byte array in java

https://inaved-momin.blogspot.com/2012/08/understanding-javaiostreamcorruptedexce.html

current Problem: reading a link position from a node and then trying to read it from the random access file is causing a StreamCorruptionExceptions.

Goal: to be able to access all node in the random access file,modify and write them back to the random access file.

Test.java

Node.java