Vista和超级隐藏文件上的Java File.canWrite()

Vista和超级隐藏文件上的Java File.canWrite(),java,file,windows-vista,hidden,Java,File,Windows Vista,Hidden,我有一些代码可以有效地做到这一点: File file = new File("C:\\Program Files (x86)\\Something\\fred.txt"); System.out.println("file.canWrite() = " + file.canWrite()); 这是真的。 奇怪的是,我可以毫无例外地创建文件。此外,另一个程序可以读取我创建的文件。问题是,在Windows资源管理器中,文件根本不显示 显示隐藏文件你可能会想,但不,我已经打开了这个选项 我还发现了

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

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下运行的。

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

您应该在C:\Users\\AppData\Local\VirtualStore\\\中找到您的文件

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

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

您应该在C:\Users\\AppData\Local\VirtualStore\\\中找到您的文件


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

我相信更新10可能已经改变了这种行为。我知道,为了更好地使用vista,微软重新实现了很多浏览器功能。虽然我不是100%确定,但我建议你看看。

我相信更新10可能已经改变了这种行为。我知道,为了更好地使用vista,微软重新实现了很多浏览器功能。虽然我不是100%肯定,但我建议你看看