"删除"会发生什么?如果我在Java中截断文件?

时间:2018-03-23 22:01:36

标签: java

假设我有一个大小为1mb的文件。现在我做了以下事情:

function foo(value) {
     // code here 
}

 const users = [{ name: 'Alexander Castle', age: 25 }, { name: 'Anthony
 Hopkins', age: 60 }, { name: 'Naomi Kempbell', age: 37 }, { name:
 'Hannah Montanna', age: 19 }];

当我将空字节数组写入文件时,"删除"会发生什么?字节?它们是否仍然存在于文件系统中?它们仍然以某种方式连接到文件(例如标记)?这不仅仅是删除文件吗?

感谢。

1 个答案:

答案 0 :(得分:2)

从Java的角度来看,写入调用之前文件中的数据已经消失了。在大多数操作系统上,调用此write方法实际上会导致文件被打开以进行写入,而这反过来(在文件已经存在的情况下)会截断文件。至于底层存储本身,这将解除存储块(扇区,集群,扩展......)与文件本身的关联,标记它们是免费的。在传统的硬盘驱动器上,数据本身可能是可恢复的,但在基于闪存的存储器上,块被标记为空闲的信息也被实际传送到芯片(TRIM),数据实际上已经消失了。