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

Java 为什么FileOutputStream会写入磁盘上的不同位置?,java,fileoutputstream,Java,Fileoutputstream,我正在使用FileOutputStream将我的内容写入android设备SD卡上的文件“sample.txt” 但每次我尝试写入内容时,FileOutputStream都会将其写入磁盘上的不同位置 我已经检查了文件“sample.txt”的起始位置,每次它增加512字节 我该怎么办?如果您要覆盖文件,那么这只是文件系统在做它的事情,与FileOutputStream无关。对于基于闪存的文件系统来说,避免重复使用设备的同一部分并不罕见,因为闪存的写入/擦除周期有限,所以闪存文件系统会尝试将写入扩

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

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

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

我该怎么办?

如果您要覆盖文件,那么这只是文件系统在做它的事情,与
FileOutputStream
无关。对于基于闪存的文件系统来说,避免重复使用设备的同一部分并不罕见,因为闪存的写入/擦除周期有限,所以闪存文件系统会尝试将写入扩展到整个设备,仅当以前使用的区域是最旧的时才重复使用。这很好,你不需要做什么,文件系统会把它整理好

如果要附加到文件,例如,使用以下选项之一,例如:

…然后文件在增长,因为这是您要求它做的。如果这不是您想要的,请使用其他构造函数之一,或者对
append
参数传递
false

如果您要覆盖文件,那么这只是文件系统在做它的事情,与
FileOutputStream
无关。对于基于闪存的文件系统来说,避免重复使用设备的同一部分并不罕见,因为闪存的写入/擦除周期有限,所以闪存文件系统会尝试将写入扩展到整个设备,仅当以前使用的区域是最旧的时才重复使用。这很好,你不需要做什么,文件系统会把它整理好

如果要附加到文件,例如,使用以下选项之一,例如:

…然后文件在增长,因为这是您要求它做的。如果这不是您想要的,请使用其他构造函数之一,或者对
append
参数传递
false

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