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

标签 java file windows-vista hidden

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

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\\AppData\Local\VirtualStore\\\\ 中找到您的文件。

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

关于Vista 上的 Java File.canWrite() 和 super 隐藏文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/280600/

相关文章:

java - 使用 POI 将大型结果集写入 Excel 文件

java - 如何让 Android EditText 强制其容器滚动

Java Stream.collect() lambda 参数类型

c++ - 如何刷新 Windows 中的所有文件缓冲区?

android - 在内部存储android上下载文件时出错

c - 在 c 中读取名称值对的最佳方法

windows-vista - 如何让 OpenSSL 在 Windows Vista 上写入 RANDFILE?

用于验证字符串的 Java 正则表达式

windows - 批处理文件,vista x64,if 和括号

.net - 如何提高进程的 I/O 优先级?