如何解决为什么在 C:\Windows 中看不到 Java 属性文件
我有一个 Java 程序“PropertyWrite”将属性文件“crazy.properties”写入目录 C:\Windows
import java.io.*;
import java.util.Properties;
public class PropertyWrite {
public static void main(String[] args) throws Exception {
File myprop = new File("C:\\WINDOWS\\crazy.properties");
Properties props = new Properties();
props.setProperty("testprop","crazy");
OutputStream os = new FileOutputStream(myprop);
props.store(os,"comment");
os.close();
System.out.println(myprop.exists()); // returns true
}
}
当我通过 Windows 文件资源管理器搜索该文件时,它不可见
此外“Cmd -> dir”不显示文件
不知何故,文件似乎被隐藏了
如果我尝试使用我的程序“PropertyRead”读取文件
它工作正常,并按预期打印值“crazy”
import java.io.*;
import java.util.Properties;
public class PropertyRead {
public static void main(String[] args) throws Exception {
File myprop = new File("C:\\WINDOWS\\crazy.properties");
System.out.println(myprop.exists()); // returns true
Properties props = new Properties();
FileInputStream in = new FileInputStream(myprop);
props.load(in);
in.close();
System.out.println(props.getProperty("testprop")); // prints crazy
}
}
现在要疯了:
如果我手动创建相同的文件(crazy.properties with content -> testprop=handmade)
并将其移动到文件夹 C:\Windows 资源管理器能够显示该文件。
该文件似乎可见
现在我重新启动“PropertyRead”-> 它打印的不是“手工制作的”-> 它打印的是“疯狂的”
什么鬼???
现在我通过资源管理器删除文件“C:\WINDOWS\crazy.properties”并重新启动
属性读取
该文件仍然存在(但不可见)并且打印“crazy”
怎么会这样?
提前致谢
解决方法
没有管理员权限的普通程序不允许写入例如Windows 目录。
出于兼容性原因,在某些 Windows 版本中,写入此类位置的文件可能会出现在特定于您的用户配置文件的“VirtualStore”中。
如果您的文件在那里,请检查 %UserProfile%\AppData\Local\VirtualStore。
编辑:可以在此处找到有关 VirtualStore 如何工作的更多信息: https://answers.microsoft.com/en-us/windows/forum/windows_7-windows_programs/please-explain-virtualstore-for-non-experts/d8912f80-b275-48d7-9ff3-9e9878954227
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。