问题标签 [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 投票
10 回答
9753 浏览

c# - 如何使用 C# 向文件中插入字符

我有一个巨大的文件,我必须在特定位置插入某些字符。在 C# 中执行此操作而无需再次重写整个文件的最简单方法是什么。

0 投票
2 回答
13005 浏览

java - java中的随机访问文件

我有以下字段:

  • 库存控制(16 字节记录)
    • 产品 ID 代码(int – 4 个字节)
    • 库存数量(int – 4 字节)
    • 价格(双倍 - 8 字节)

如何使用上述长度创建固定长度的随机访问文件?我在网上尝试了一些示例,但是当我尝试访问它们时,要么得到 EOF 异常,要么得到随机地址值。

我尝试了更多示例,但无法很好地理解这个概念。我正在尝试一个项目,并将尝试更多地探索它。

这是一些示例数据。No. in stock数据中可能存在漏洞23 == 023

谢谢您的帮助。

0 投票
6 回答
7880 浏览

compression - 允许在文件中随机读/写的最佳压缩算法是什么?

允许在文件中随机读/写的最佳压缩算法是什么?

我知道任何自适应压缩算法都是不可能的。

而且我知道霍夫曼编码是不可能的。

有没有人有更好的压缩算法来允许随机读/写?

我认为如果你将它写成块,你可以使用任何压缩算法,但理想情况下我不希望一次解压缩整个块。但是,如果您对执行此操作的简单方法以及如何知道块边界有任何建议,请告诉我。如果这是您的解决方案的一部分,请让我知道当您要读取的数据跨越块边界时您会做什么?

在您的答案的上下文中,请假设有问题的文件是 100GB,有时我想读取前 10 个字节,有时我想读取最后 19 个字节,有时我想读取 17中间的字节。.

0 投票
9 回答
20027 浏览

c# - .NET C# - 文本文件中的随机访问 - 没有简单的方法?

我有一个文本文件,其中包含多个“记录”。每条记录都包含一个名称和一组数字作为数据。

我正在尝试构建一个将读取文件的类,仅显示所有记录的名称,然后允许用户选择他/她想要的记录数据。

第一次浏览文件时,我只读取标题名称,但我可以跟踪文件中标题所在的“位置”。在用户请求后,我需要随机访问文本文件以查找每条记录的开头。

我必须这样做,因为文件太大而无法在内存(1GB+)中完全读入应用程序的其他内存需求。

我尝试使用 .NET StreamReader 类来完成此操作(它提供了非常易于使用的“ReadLine”功能,但无法捕获文件的真实位置(BaseStream 属性中的位置由于缓冲类使用)。

在 .NET 中没有简单的方法可以做到这一点吗?

0 投票
13 回答
25908 浏览

compression - 压缩格式对档案内的随机访问有很好的支持?

这类似于上一个问题,但那里的答案不能满足我的需求,我的问题略有不同:

我目前对一些包含排序数据的非常大的文件使用 gzip 压缩。当文件未压缩时,二进制搜索是一种方便且有效的方式来支持在已排序数据中查找某个位置。

但是当文件被压缩时,事情就变得棘手了。我最近发现了zlibZ_FULL_FLUSH选项,它可以在压缩期间用于在压缩输出中插入“同步点”(inflateSync()然后可以开始从文件中的各个点读取)。没关系,尽管我已经拥有的文件必须重新压缩才能添加此功能(奇怪gzip的是没有此选项,但如果必须,我愿意编写自己的压缩程序)。

一个来源看来,这甚至Z_FULL_FLUSH不是一个完美的解决方案......不仅不是所有 gzip 档案都支持它,而且检测档案中的同步点的想法可能会产生误报(与同步的幻数巧合)点,或者由于Z_SYNC_FLUSH也产生同步点但它们不能用于随机访问)。

有更好的解决方案吗?如果可能,我想避免使用用于索引的辅助文件,并且对准随机访问的显式默认支持会有所帮助(即使它是大粒度的——比如能够以每 10 MB 的间隔开始读取)。是否有另一种压缩格式比 gzip 更支持随机读取?

编辑:正如我所提到的,我希望在压缩数据中进行二进制搜索。我不需要寻找特定的(未压缩的)位置——只需要在压缩文件中寻找一些粗粒度的位置。我只想支持“将数据从大约 50%(25%、12.5% 等)开始解压缩到此压缩文件中”之类的支持。

0 投票
1 回答
1087 浏览

java - 可以以及如何将 RandomAccessFile 与 FTP 服务器上包含的文件一起使用?

这个问题与Java有关

通过使用 RandomAccessFile,我打算也能够修改文件而不将其清空。

0 投票
2 回答
6441 浏览

random-access - 文件和随机访问文件有什么区别?

文件和随机访问文件有什么区别?

0 投票
3 回答
1711 浏览

java - Java访问大文件

我正在寻找一种有效的方法来创建一个大小未知但范围可以从 mb 到 gb 并随机填充其内容的文件。我可能会写前 200 个字节而不是跳到最后并写最后 200 个字节并移动到中间并在那里写。这样做是否RandomAccessFile有效,或者有没有更适合这种工作的替代方案?

0 投票
1 回答
983 浏览

java - RandomAccessFile.close() 是否在内部调用 FileChannel.force()?

作为事务的一部分,我正在使用 RandomAccessFile 对文件执行一些写入操作。在提交事务之前,我想绝对确定数据已写入磁盘。调用force(boolean)RAFFileChannel似乎提供了这种保证,但是当我关闭文件时它是隐式调用的,还是我必须手动调用它?

force()此外,是否有人对实际执行的操作以及可以信任的程度有任何见解?操作系统是否有可能报告数据已写入磁盘,而实际上它仍位于某个缓存中?这个 OS/HDD/文件系统在多大程度上是依赖的?

0 投票
8 回答
12938 浏览

c# - c#随机索引到数组中的最快方法

我有一个双值数组“vals”,我需要随机索引到这个数组并获取一个值。GenRandomNumber() 返回一个介于 0 和 1 之间的数字,但从不返回 0 或 1。我使用 Convert.ToInt32 基本上将所有内容都放在小数点的左边,但必须有更有效的方法来做到这一点?

这是我的代码:

谢谢

更新

感谢所有回复的人,但我只能使用提供的 MersenneTwister 随机数实现,该实现具有方法 rand.NextDouble()

更新 2

再想一想,我需要做的就是生成一个介于 0 和 array.length-1 之间的随机数,然后使用它随机索引到 array。vals 长度为 2^20 = 1048576,因此生成随机 int 就足够了。我注意到我的 MersenneTwister 有一个方法:

如果我把它称为vals[rand.Next(vals.length-1)]那应该做对吗?我还看到 MersenneTwister 有一个构造函数:

不确定这是做什么用的,我可以使用它来预填充可接受的随机数,我为其提供一个 0 到 vals.length 的数组吗?

仅供参考 vals 是一个长度为 1048576 的双数组,用于划分正态分布曲线。我基本上是使用这种机制尽可能快地创建正态分布的数字,蒙特卡罗模拟每天使用数十亿个正态分布的随机数,所以每一点都有帮助。