Java删除文件后电脑磁盘空间没有恢复
问题
当用一下命令删除文件后,电脑磁盘内存没有恢复,还是原来的大小
File folder = new File("/tmp/file.mp4")
file.delete();
解决
原来是 FileOutputStream
文件流忘了关了,导致一直占用这个资源。所以使用完后一定记得关文件流,使用下面的代码关闭文件流:
FileOutputStream fileOutputStream = new FileOutputStream(new File());
fileOutputStream.close();
Linux 里的文件被删除后,空间没有被释放是因为在 Linux 系统中,通过 rm 或者文件管理器删除文件将会从文件系统的目录结构上解除链接(unlink).然而如果文件是被打开的(有一个进程正在使用),那么进程将仍然可以读取该文件,磁盘空间也一直被占用。
可以使用 lsof +L1 |grep delete
命令来查看状态为 deleted
的文件,状态为 deleted
为标记被删除,其实该文件并没有从磁盘中删除,类似windows下的回收站状态。
所以当进程结束后,磁盘空间就会被释放。