问题标签 [filechannel]

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 投票
1 回答
3176 浏览

java - FileChannel 映射 - 无法扩展写入

我正在使用 RandomAccessFile 打开大文件(~ 200 MB),然后为它获取 Channel。我正在尝试将一些数据映射到 MappedByteBuffer,但出现异常:

通道未打开写入 - 无法将文件扩展为所需大小。

我不明白,为什么 map 方法试图写入文件 - 映射区域小于文件大小!为什么在这种情况下尝试扩展文件?

更新

问题解决了,原来我认为第三个参数表示文件中的索引位置,它是缓冲区的长度。

0 投票
2 回答
8988 浏览

java - 以最快的方式复制大文件

我试图找到一种以最快的方式复制大文件的方法......

然后创建这个类:

我测试了它,结果非常非常令人印象深刻......但是有一个很大的问题,复制的文件比当前文件大很多!

所以,请检查它并帮助我找到问题,谢谢:))

0 投票
2 回答
2016 浏览

java - 如何使用 Java FileChannel 复制保留的时间戳

如何使用 Java FileChannel 复制文件和目录的保留时间戳?看起来文件在复制到另一个位置时没有保留时间戳。在 Java 中使用 FileChannel 怎么可能?

0 投票
1 回答
321 浏览

java - MappedByteBuffer 在初始运行时很慢

长期读者,第一次海报。

我在从一组二进制文件中快速读取数据时遇到了一些麻烦。ByteBuffers 和 MappedBytBuffers 提供了我需要的性能,但它们似乎需要初始运行才能预热。我不确定这是否有意义,所以这里有一些代码:

所以这需要大约 7 秒才能运行,但如果我再次运行它,它会在 10 毫秒内完成。似乎它需要进行某种初始运行来设置正确的行为。我发现通过做这样简单的事情是可行的:

这大约需要 2 秒,如果我随后运行 MappedByteBuffer 过程,它会在 10 毫秒内返回数据。我只是不知道如何摆脱初始化步骤并在 10 毫秒内第一次读取数据。我已经阅读了有关“热身”、JIT 和 JVM 的各种内容,但都无济于事。

所以,我的问题是,是否有可能立即获得 10 毫秒的性能,还是我需要进行某种初始化?如果是这样,请问最快的方法是什么?

该代码旨在运行大约一千个相当大的文件,因此速度非常重要。

非常感谢。

0 投票
2 回答
1845 浏览

java - 使用 ByteBuffer 和 FileChannel 结束文件

我写了一个小代码,说

假设文件包含10个字节,屏幕上出现的结果是10,0,0,但文件末尾没有-1,为什么?

0 投票
1 回答
112 浏览

java - 如何倒带文件通道

在我的作业中我们需要使用fc.position(position)来定位内容,但是之后我需要倒带 fc 以便递归这样做,我该怎么办,似乎 fc 没有倒带方法

0 投票
1 回答
64 浏览

java - 我可以在某些字节被超越的情况下反转文件通道吗

在我的编程中,我不知道我需要为处理它的某个对象读取多少字节。但我知道它最多是 1024 字节。

处理完对象后,我怎样才能将剩余的字节放回文件中,即,将 fc 反转为剩余字节数。

我的意思是我可以让文件通道返回一定数量的字节,比如从当前位置返回 4 个字节吗?–

0 投票
0 回答
185 浏览

android - 复制文件:FileChannel vs Input/OutputStream

是否使用FileChannel更新和更好的方式在 Android 中复制文件(而不是制作InputStreamand OutputStream)?

如果是这样,我如何指定File要复制到任何其他位置的资产?

0 投票
3 回答
564 浏览

java - 奇怪的 ByteBuffer 输出

当我遇到这个奇怪的问题时,我正在使用 ByteBuffers 和 IntBuffers。这是代码 -

现在,如您所见,程序创建 aByteBuffer和 anIntBuffer并使用类的put()方法IntBuffer将 an 添加intByteBuffer4 个字节。System.out.println(bb.getInt()); 当我在 try 块语句注释之前运行程序时, 这是我的输出 -

System.out.println(bb.getInt()); 现在,当我使用未注释的语句再次运行它时, 这就是我的输出 -

那么谁能告诉我为什么会这样?

0 投票
1 回答
205 浏览

java - 如何创建写入 FileChannel 的 OutputStream

我有一个FileChannel对象(我需要它以便我可以将 a 应用FileLock到文件中),并且我想使用一个简单的OututStream. 如何创建一个OutputStream写入 a 的FileChannel

这应该在某个地方的 Java API 中,但我找不到它。FileChannel没有合适的工厂方法。该类FileOutputStream没有合适的构造函数。该类Files(Java 7)没有合适的方法。