0

我正在制作一个游戏,该游戏需要在用户帐户的 AppData 文件夹中制作某个目录。现在的问题是,我不知道该把它放在哪里,因为每个用户都是不同的。顺便说一句,这是在窗户上。我想知道我是否应该写一些特别的东西或者...

File file = new File("C:\\Users\\%USER%\\AppData\\Roaming\\[gameName]");

是否有一些特殊的名字我必须给“%USER%”(我只是用它作为例子),或者我还有其他事情要做吗?

4

3 回答 3

3

您可以使用通常为“C:\Users\username\AppData\Roaming”的 APPDATA 环境变量

您可以使用 System.getenv() 函数获取它:

String appData = System.getenv().get("APPDATA");

编辑 :

看这个例子(创建一个目录“myGame”并在这个目录中创建一个文件“myGameFile”)。代码很糟糕,但这只是为了让您了解它是如何工作的。

String gameFolderPath, gameFilePath;
gameFolderPath = System.getenv().get("APPDATA") + "\\myGame";
gameFilePath = gameFolderPath + "\\myGameFile";

File gameFolder = new File(gameFolderPath);
if (!gameFolder.exists()) {
    // Folder doesn't exist. Create it
    if (gameFolder.mkdir()) {
        // Folder created
        File gameFile = new File(gameFilePath);
        if (!gameFile.exists()) {
            // File doesn't exists, create it
            try {
                if (gameFile.createNewFile()) {
                    // mGameFile created in %APPDATA%\myGame !
                }
                else {
                    // Error
                }
            } catch (IOException ex) {
                // Handle exceptions here
            }
        }
        else {
            // File exists
        }
    }
    else {
        // Error
    }
}
else {
    // Folder exists
}
于 2013-07-25T19:39:30.947 回答
1

user.home您可以使用 windows属性检索当前主用户路径:

String homeFolder = System.getProperty("user.home")
于 2013-07-25T19:43:47.290 回答
0
  • 首先:您不能假设 C 是 Windows 驱动器。%HOMEDRIVE% 的字母 C 不是强制性的。
  • 其次:您也不能假设 %USERHOME% 位于用户文件夹中的驱动器 C:\ 上。
  • 第三:如果您使用您的构造并且前两点都适用,您的数据将不会同步到 Windows 域中基于服务器的配置文件。

使用 Windows 环境变量 %APPDATA%。它指向您想要的路径,但我不确定所有 Windows 版本都具有该变量。

于 2013-07-25T19:39:15.193 回答