使用FileWriter写入文件时是否可以移动文件的内容?
我需要将数据常量写入文件的开头,如果这样做,它将覆盖文件。
我应该使用什么技术来执行此操作,或者应该在每次写入文件时复制文件的副本(新数据位于顶部)?

有帮助吗?

解决方案

如果要覆盖文件的某些字节而不是其他字节,则可以使用“查找和写入”来实现。如果要更改文件中每个字节的内容(例如,通过在文件的开头添加一个字节),则需要编写一个新文件,并在完成编写后对其进行重命名。

想想以下问题的答案:“完成后,偏移量为x的字节的内容是什么?”。如果对于x的大部分可能值,答案是“不是以前的样子”,那么您需要一个新文件。

其他提示

与其争辩“完成后,偏移量x处的字节的内容是什么?”,而是让我们改变观念,并问为什么文件系统或硬盘固件不能做什么?:a)提供访问文件的另一种方式[比方说,内联] b)增加文件的长度,方法是在开头,中间或末尾添加字节数c)移动从newcontent.length位置的横截面

在磁盘固件或文件系统实现级别上处理这些操作,而不是将这项工作留给应用程序开发人员,将更加轻松快捷。我希望文件系统编写者或硬盘供应商会尽快提供这种功能。

关于, 桑巴舞

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top