为什么FileOutputStream写入磁盘上的不同位置?

时间:2012-02-01 10:25:46

标签: java fileoutputstream

我正在使用FileOutputStream将我的内容写入Android设备SD卡上的文件“sample.txt”

但每次我尝试编写内容时,FileOutputStream都会将其写入磁盘上的其他位置。

我检查了文件“sample.txt”的起始位置,每次增加512字节!

我该怎么办?

1 个答案:

答案 0 :(得分:5)

如果你覆盖该文件,那就是文件系统正在做的事情,与FileOutputStream无关。基于闪存的文件系统避免重复使用设备的相同部分并不罕见,因为闪存具有有限数量的写入/擦除周期,因此闪存文件系统试图将写入扩展到整个设备,只有在它们是最老的区域时才重复使用以前使用过的区域。它很好,你无需做任何事情,文件系统对其进行排序。

如果您附加到文件中,例如使用其中一个constructors that allows appending,例如:

OutputStream os = new FileOutputStream("sample.txt", true); // true = append

...然后文件正在增长,因为这就是你要求它做的事情。如果那不是您想要的,请使用其他构造函数之一或将false传递给append参数。