1

我有一些代码可以有效地做到这一点:

File file = new File("C:\\Program Files (x86)\\Something\\fred.txt");
System.out.println("file.canWrite() = " + file.canWrite());

它打印真实。现在奇怪的是,我可以毫无例外地创建文件。此外,另一个程序可以读取我创建的文件。问题是,在 Windows 资源管理器中,该文件根本不显示!

显示您可能正在考虑的隐藏文件,但不,我已打开该选项。

我还发现了有关 Vista 中的“超级隐藏文件”,所以我打开了该选项,但我仍然看不到该文件!也许我没有正确编辑我的注册表 - 我只能假设该文件是超级隐藏的 - 它还能在哪里?

现在的问题是我正在创建一个 html 文件,当我启动浏览器时,它看不到 html 文件,因为它是超级隐藏的。

如何防止 Java 创建超级隐藏文件?这是在 JRE 6 update 6 下运行的。

4

2 回答 2

9

您很可能是文件夹重定向的“受害者”。启用 UAC 后,当您未以管理员身份运行程序时,对 Program Files 的任何写入都会重定向到其他位置。

您应该在 C:\Users\<username>\AppData\Local\VirtualStore\<insert>\<expected>\<path>\<here> 中找到您的文件。

当然,正确的解决方法是首先不写入 Program Files。相反,请使用用户主目录中的某个位置(您应该写入的确切位置取决于应用程序的用途)。

于 2008-11-11T11:02:31.990 回答
0

我相信更新 10 可能已经改变了这种行为。我知道重新实现了很多浏览器的东西可以更好地与 vista 一起工作。虽然我不是 100% 肯定,但我建议你看看。

于 2008-11-11T11:05:04.747 回答