在 Java 文件中间写入字节的最佳方法

Posted

技术标签:

【中文标题】在 Java 文件中间写入字节的最佳方法【英文标题】:Best Way to Write Bytes in the Middle of a File in Java 【发布时间】:2010-09-15 22:26:29 【问题描述】:

使用 Java 在文件中间写入字节的最佳方法是什么?

【问题讨论】:

【参考方案1】:

在文件中间读取和写入就像在 Java 中使用 RandomAccessFile 一样简单。

RandomAccessFile,尽管它的名字,更像是InputStreamOutputStream,而不像File。它允许您读取或查找文件中的bytes,然后开始写入您希望停止的任何字节。

一旦你发现了这个类,如果你对常规文件 i/o 有基本的了解,它就会很容易使用。

一个小例子:

public static void aMethod()
    RandomAccessFile f = new RandomAccessFile(new File("whereDidIPutTHatFile"), "rw");
    long aPositionWhereIWantToGo = 99;
    f.seek(aPositionWhereIWantToGo); // this basically reads n bytes in the file
    f.write("Im in teh fil, writn bites".getBytes());
    f.close();

【讨论】:

如果我不知道位置,或者如果我有数百个文件,我必须在某些指定文本之后在它们中间插入数据怎么办? 如果不知道位置,则需要打开文件读取,找到需要写入的位置。 我的“file.txt”包含这样的文本“你好(换行符)我很好谢谢”现在我想在文本中间插入“是”我必须做什么?在执行此操作时请注意,我们正在处理大量大小的文件 请注意,RandomAccessFile 会从 aPositionWhereIWantToGo 覆盖文件的当前内容【参考方案2】:

使用RandomAccessFile

Tutorial Javadocs

【讨论】:

链接到的教程实际上并没有提到 RandomAccessFile 类。也许这个代替:tutorials.jenkov.com/java-io/randomaccessfile.html【参考方案3】:

在不截断的情况下以写入模式打开文件,寻找所需的偏移量,然后写入所需的数据。请注意文本/二进制模式。

【讨论】:

【参考方案4】:

我认为最好每次都创建文件块。下载文件后,将它们连接在一起。现在我正在努力。

【讨论】:

以上是关于在 Java 文件中间写入字节的最佳方法的主要内容,如果未能解决你的问题,请参考以下文章

在 PHP 中将大文件写入磁盘的最佳方法是啥?

在 Java 的并行线程中写入文件的最佳方法是啥?

为这些类型的字节级操作进行 java 编码的最佳方法是啥?

使用 RandomAccessFile 的最佳方式是 Java

在 Java 中更改 XML 文件中的一个值的最佳方法是啥?

将 StringIO 的内容写入文件的最佳方法是啥?