20得票1回答
Java 10 (Centos)上,RandomAccessFile.setLength执行速度变慢

以下是代码示例: public class Main { public static void main(String[] args) throws IOException { File tmp = File.createTempFile("deleteme", "d...

19得票2回答
Java中RandomAccessFile的并发性问题

我正在创建一个RandomAccessFile对象来通过多个线程写入文件(在SSD上)。每个线程尝试在文件的特定位置写入直接字节缓冲区,并且我确保一个线程写入的位置不会与另一个线程重叠:file_.getChannel().write(buffer, position); 其中file_是一个...

19得票5回答
支持超过Long的RandomAccessFile?

目前我正在使用 RandomAccessFile 实例来管理一些内存中的数据,但是我的 RandomAccessFile 实例的大小超过了 2^64 字节,因此我无法使用 seek() 和 write() 等方法,因为它们使用了 Long,无法管理大于 2^64 的地址空间。那么我该怎么办?有...

16得票5回答
Java - 如何高效地编写带有偶尔空洞的顺序文件

我有一个需求,需要将记录写入文件,其中数据根据数值键的值(即偏移量)写入到文件位置。例如,如果键值为100,则可能在位置400处写入。 记录包括数字键和一段数据。记录不会很大(几个字节),但可能有很多记录(数百万条)。 有两种可能的情况: 键值单调递增。在这种情况下,最好的方法是使用 ...

12得票2回答
如何在Java中写入特定行号的txt文件

我目前正在为学校写作业,需要读写txt文件。我可以正确地读取它们,但是我只能在附加的FileWriter末尾写入它们。我想要能够通过删除行上的数据然后写入新数据来覆盖txt文件中某些行上的内容。我尝试使用这种方法...public void overWriteFile(String dataT...

11得票1回答
如何通过Lollipop提供的API实现对SD卡上文件的随机访问?

我的应用程序使用Java类RandomAccessFile通过实现SeekableByteChannel接口在SD卡上随机读写字节。现在我需要使用新的Lollipop API重写它以适配Android 5.0。 我已经找到了唯一的方法来进行读取:InputStream inputStream...

10得票2回答
Java中的RandomAccessFile会将整个文件读入内存吗?

我需要从一个大文件中(比如2GB)读取最后的n行。该文件是UTF-8编码的。 想知道最有效的方法是什么。了解了Java中的RandomAccessFile,但是它的seek()方法是否会将整个文件读入内存中。它使用本地实现,所以我无法参考源代码。

9得票4回答
如何正确关闭MappedByteBuffer?

这是我正在运行的代码: import java.io.RandomAccessFile; import java.nio.MappedByteBuffer; import java.nio.channels.FileChannel; public class Main { publ...

7得票2回答
从RandomAccessFile读取数据会产生错误的结果 - Java

我有一个文本文件,共有42行。每行都有超过22,000个用逗号分隔的数字。 我想从每行中提取特定的数字,并且我有一个长度为1000的整数数组,其中包含我需要从这42行中获取的1,000个数字。例如,如果该数组包含43、1、3244,则意味着我要从第一行到第42行的每一行中获取第43个数字、第...