我有一些代码可以有效地做到这一点:
File file = new File("C:\\Program Files (x86)\\Something\\fred.txt");
System.out.println("file.canWrite() = " + file.canWrite());
它打印真实。 现在奇怪的是,我可以毫无异常(exception)地创建文件。此外,另一个程序可以读取我创建的文件。问题是,在 Windows 资源管理器中,该文件根本不显示!
显示隐藏文件你可能会想,但没有,我已经打开了这个选项。
我还发现了 Vista 中的“ super 隐藏文件”,所以我打开了该选项,但我仍然看不到该文件!也许我没有正确编辑我的注册表 - 我只能假设该文件是 super 隐藏的 - 它还能在哪里?
现在的问题是我正在创建一个 html 文件,当我启动浏览器时,它看不到 html 文件,因为它是 super 隐藏的。
如何防止 Java 创建 super 隐藏文件?这是在 JRE 6 更新 6 下运行的。
最佳答案
您很可能是文件夹重定向的“受害者”。启用 UAC 后,当您未以管理员身份运行程序时,对程序文件的任何写入都将重定向到其他位置。
您应该在 C:\Users\
当然,正确的解决方法是首先不要写入程序文件。相反,请使用用户主目录中的某个位置(您应该写入的确切位置取决于应用程序的用途)。
关于Vista 上的 Java File.canWrite() 和 super 隐藏文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/280600/