为什么 Java 属性 文件在 C:\Windows 中不可见
Why are Java property files not visible in C:\Windows
我有一个 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”-> 它打印的不是“handmade”-> 它打印的是“crazy”
什么鬼???
现在我通过资源管理器删除文件“C:\WINDOWS\crazy.properties”并重新启动
PropertyRead
该文件仍然存在(但不可见)并打印“疯狂”
怎么可能?
提前致谢
没有管理员权限的普通程序不允许写入例如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
我有一个 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”-> 它打印的不是“handmade”-> 它打印的是“crazy”
什么鬼???
现在我通过资源管理器删除文件“C:\WINDOWS\crazy.properties”并重新启动
PropertyRead
该文件仍然存在(但不可见)并打印“疯狂”
怎么可能?
提前致谢
没有管理员权限的普通程序不允许写入例如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