问题标签 [random-access]

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 投票
3 回答
9849 浏览

java - 使用 RandomAccessFile 创建文件时出现 java.io.FileNotFoundException

当我尝试使用 RandomAccessFile 创建文件时遇到 FileNotFoundException:

我现在不知道如何解决这个问题。它快把我逼疯了。

谢谢

0 投票
8 回答
3736 浏览

java - 数组的高效插入/删除算法

我订阅了一个数据提要,并使用 INSERT/DELETE 消息上的索引值创建和维护一个结构。我想问一下组装好的行家,他们是否知道任何可以有效处理零碎更新的算法——通常批量更新包含两到六个这样的消息。

数组的估计大小约为 1000 个元素。

批量更新作为按索引排序的消息列表到达,它规定在给定索引处插入或删除项目。我预计数组中的大部分流失都比结束更接近开始。

我突然想到,通过一些基本处理,我可以确定受批次影响的范围和整体大小增量,因此只移动一次数组的未受影响的尾部。

同样,我可以在第一个元素之前和最后一个元素之后保留一定数量的可用空间,以尽可能减少复制量。

其他优化包括识别更新,如下所示:

等等。

但是,我对执行识别步骤的开销持谨慎态度——它带有前瞻和回溯的味道,这可能比简单地执行复制需要更多时间。

鉴于数组的预期大小,树结构似乎重量级:一些基本性能测试表明二叉树或自平衡树(在本例中为红黑树列表实现)仅在大约 15K - 20K 个元素后才开始显示性能优势:数组副本在较小的尺寸下明显更快。我可能应该补充一点,我正在使用 Java 进行此实现。

欢迎任何提示、提示或建议。

干杯

麦克风

0 投票
2 回答
11372 浏览

java - FileInputStream.skip() 是否进行搜索?

我想将一个可能很大的文件的最后 10MB 复制到另一个文件中。理想情况下,我会使用 FileInputStream、skip() 和 read()。但是我不确定 skip() 的性能是否会很差。skip() 通常是使用下面的文件搜索实现的,还是实际上读取和丢弃数据?

我知道 RandomAccessFile,但我对是否可以使用 FileInputStream 代替它感兴趣(RandomAccessFile 很烦人,因为 API 是非标准的)。

0 投票
1 回答
940 浏览

java-me - J2ME 中的文件随机访问

J2ME 是否有类似于RandomAccessFile类的东西,或者有什么方法可以模拟这个特定的(随机访问)功能?

问题是这样的:我有一个相当大的二进制数据文件(~600 KB),并且想创建一个移动应用程序来使用该数据。该数据的格式是自制的,包含许多索引块和数据块。在其他平台(如 PHP 或 C)上读取数据通常是这样的:

  1. 读取 2 个字节作为索引键 ( K),另外 2 个字节作为索引值 ( V) 用于所需的数据类型
  2. V从文件开头跳过字节以查找文件位置,索引键的数据K开始
  3. 读取数据
  4. 利润 :)

这在程序流程中发生了很多次。

嗯,我正在研究在 J2ME 上做同样的事情的可能性,虽然我承认我对整个 Java 事物很陌生,但我似乎无法找到除InputStream( DataInputStream) 类之外的任何东西具有我需要的基本搜索/跳至字节/返回位置功能。

那么,我的机会有多大?

0 投票
1 回答
7588 浏览

java - 在java中删除随机访问文件

我创建了一个随机访问文件,如下所示:

我想删除文件“afile”。谁能建议我怎么做?

0 投票
4 回答
29006 浏览

java - 为什么 Collections.shuffle() 对我的数组失败?

为什么我的代码不起作用?

结果是:0 1 2 3 4 5 6 7 8 9。

我期待一个随机打乱的序列

0 投票
3 回答
1089 浏览

java - RandomAccessFile 内存泄漏

我在 java 中使用 RandomAccessFile。我有内存泄漏问题。我已将代码简化为以下内容:

执行此代码(并为 GC 留出足够的时间)后,报告的应用程序内存使用量略高于 150MB。

我错过了什么?还是应该归咎于 Java?

0 投票
7 回答
22529 浏览

java - Java:从带有缓冲输入的随机访问文件中读取字符串

我以前从未有过使用 Java IO API 的亲密体验,现在我真的很沮丧。我很难相信它是多么的奇怪和复杂,做一个简单的任务是多么的困难。

我的任务:我有 2 个位置(起始字节、结束字节)pos1pos2. 我需要读取这两个字节之间的行(包括开始一个,不包括结束一个)并将它们用作 UTF8 String 对象。

例如,在大多数脚本语言中,它会是一个非常简单的 1-2-3-liner (在 Ruby 中,但对于 Python、Perl 等来说基本相同):

Java IO API 很快就搞砸了;)事实上,我看到了两种\n从常规本地文件中读取行(以 结尾)的方法:

  • RandomAccessFile具有getFilePointer()and seek(long pos),但它的readLine()读取非 UTF8 字符串(甚至不是字节数组),但非常奇怪的字符串编码损坏,并且它没有缓冲(这可能意味着每个read*()调用都将被转换为单个 undelying OS read()= > 相当慢)。
  • BufferedReader有很好的readLine()方法,它甚至可以用 做一些查找skip(long n),但是它无法确定已经读取的偶数字节,更不用说文件中的当前位置了。

我试过使用类似的东西:

...然后fc.position()用于获取当前文件读取位置并fc.position(newPosition)设置一个,但在我的情况下它似乎不起作用:看起来它返回由 BufferedReader 完成的缓冲区预填充的位置,或者类似的东西 - 这些计数器似乎以 16K 为增量四舍五入。

我真的必须自己实现这一切吗,即一个文件阅读界面,它将:

  • 允许我在文件中获取/设置位置
  • 缓冲文件读取操作
  • 允许读取 UTF8 字符串(或至少允许诸如“读取所有内容直到下一个\n”之类的操作)

有没有比自己实施更快的方法?我在监督什么吗?

0 投票
1 回答
1339 浏览

java - java.io.RandomAccessFile Mac 上大文件的无效参数

我正在运行一个程序,它需要随机访问一个非常大的文件(大约 151 GB)。我发现每当它在 Orchard 实验室的一台 MacPro 机器上运行时(详情请见http://inst.eecs.berkeley.edu/cgi-bin/clients.cgi?choice=6a&string=),程序都会尝试读取文件的特定部分并因文件系统错误而崩溃:

我只是使用 RandomAccessFile 类。

无论我使用哪台 Orchard 实验室计算机,每次都会在相同的确切位置发生相同的确切字节范围。

我已经在运行 Debian Linux 的戴尔计算机上测试了这段代码,但没有遇到这个问题。

0 投票
2 回答
724 浏览

java - 是否可以将 RandomAccessFile 中的特定字节设置回 null?

最初,当我创建 RandomAccessFile 时,我跳过了一些字节,所以这些字节保持为空,但现在我需要删除我写的一些字节。现在,我正在做的是用空格覆盖位置,但有没有办法将它设置回空?

编辑:由于它必须包含一个值,我想知道如何将它设置回它被跳过时默认分配的原始值。