困难在于它应该是跨平台的.Windows 2000,XP,Vista,OSX,Linux,其他unix版本.我正在寻找可以为所有平台实现此目的的代码片段,以及一种检测平台的方法.
现在,你应该知道的错误4787931是user.home不能正常工作,所以请不要为我提供教科书的答案,我可以在手册中找到这些我自己.
我需要的是一种独立于平台的获取本地应用程序数据目录路径的方法.System.getenv("LOCALAPPDATA")似乎只适用于Windows.我该怎么做?
我有一个基于LWJGL的游戏引擎,要运行它我需要将所需的本机库放在用户的计算机上.在Windows上,我通过以下方式找到Application Data目录:
System.getenv("APPDATA");
Run Code Online (Sandbox Code Playgroud)
一切都很容易,很好.我创建一个File对象,必要时调用mkDir,如果文件不在机器上,则写入文件.
(注:创建的目录不应该是一个临时文件,因为我想为未来的运行.此外,保存提取文件,创建该目录给出了保存游戏和其他类似数据的简单和易于使用的文件夹.)
但是,如果计算机是Macintosh或Linux,我想做类似的事情,但我不熟悉如何使用这两个系统,我并没有真正处于良好的测试位置.我目前找到目标目录的方法是这样的:
private static String defaultDirectory()
{
String OS = System.getProperty("os.name").toUpperCase();
if (OS.contains("WIN"))
return System.getenv("APPDATA");
else if (OS.contains("MAC"))
return System.getProperty("user.home") + "/Library/Application "
+ "Support";
else if (OS.contains("NUX"))
return System.getProperty("user.home");
return System.getProperty("user.dir");
}
Run Code Online (Sandbox Code Playgroud)
那么,这是正确的方法吗?我正在尝试访问Mac上的应用程序支持(我已经知道这相当于Windows上的AppData文件夹)而我正在尝试在Linux上使用类似的文件夹,但我不确定是否"用户.家"找到正确的.
我正在尝试让我的程序%APPDATA%在用户使用Windows时设置的位置保存其状态.但是,System.getProperty("temp.dir");不回归.为了保存状态,如何%APPDATA%在Windows中获取变量的值?
我有一个在 Windows XP / Vista / 7 和 Mac OS X 上运行的 SWT Java 应用程序。我当前将配置文件保存到:
System.getProperty("user.home") + 文件名
随着 Windows Vista 和 Windows 7 中安全性的变化,这似乎不再是保存它的最佳位置。
该文件保存注册密钥信息等信息,如果该文件无法保存或被删除,我的用户会很烦恼。
我应该使用更好的路径吗?
另外,Mac OS X 上每个用户应用程序数据的首选路径是什么?
我已经熟悉创建文件并将它们放在"user.home"中.我在Mac上,所以对PC的文件夹知之甚少,但在我的库中,有应用程序支持.有没有办法在那里放置一个目录,还有PC的%appdata%?
所以,我正在创建一个游戏,需要创建目录来存储所有用户的数据并保存和诸如此类的东西.如您所见,我需要在名为"[WarDungeon]"的用户的Application Data文件夹中创建一个文件夹,在那里,我将存储其他文件夹,例如level,bin,sprite等.
我对使用Mac OS和Linux不太感兴趣,因为我想让%appdata%文件夹与Windows一起使用.
这是我的代码:
public FileManage() {
gamePath = System.getenv("APPDATA") + "[WarDungeon]";
gameLevelPath = System.getProperty("user.home") + "\\Local Settings\\ApplicationData\\[WarDungeon]\\level";
gameBinPath = System.getProperty("user.home") + "\\Local Settings\\ApplicationData\\[WarDungeon]\\bin";
File createDir1 = new File(gamePath);
createDir1.mkdir();
System.out.println("First test passed.");
if (createDir1.exists() == true) {
System.out.println("First directory created!");
}
}
Run Code Online (Sandbox Code Playgroud)
我该如何解决?
提前致谢, :)