首页 > 解决方案 > Java可以删除计算机的所有文件和文件夹吗?

问题描述

我只是好奇(但不愿意在我的电脑上尝试)如果我在 Java 上运行这段代码会发生什么?

 private static void deleteAll(File file)
    {
        for(File f : file.listFiles())
        {
            if(f.isFile())
            {
                f.delete();
            }
            else
            {
                deleteAll(f);
                f.delete();
            }
        }
    }

    public static void main(String[] args) {

        File file = new File("/home");      
        deleteAll(file);
    }

这是否等同于 rm -rf / 在 linux 中并且会删除我计算机上的所有内容?还是操作系统会阻止我删除系统文件?

太感谢了!

标签: javarecursiondelete-file

解决方案


好的,这引起了我的兴趣,我在 lxc 容器上进行了尝试。现在这不是一个科学测试,但总比没有好。

好吧,我会说我得到了好坏参半的结果。如果您尝试使用 java 正常删除文件,而不是系统文件,那么您将完成您的工作。一旦你开始杀死你的系统,那么事情就会改变。Java 不允许您从根目录中删除任何内容,但我确实成功地删除了我的用户文件夹 ( /home/ubuntusuer)。我没有破坏系统,唉。

有一种机制可以阻止您删除整个系统。因此,与 相比,行为不会完全相同rm -rf /,但您仍然可以使用它删除很多东西。


推荐阅读