我想在使用Java的计算机的目录中创建一个文件

时间:2013-07-25 19:25:43

标签: java directory

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

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

是否有一些特殊的名称,我必须给出“%USER%”(我只是用它作为例子),还是我还有别的东西?

3 个答案:

答案 0 :(得分:3)

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

你可以使用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
}

答案 1 :(得分:1)

您可以使用Windows user.home属性

检索当前的家庭用户路径
String homeFolder = System.getProperty("user.home")

答案 2 :(得分:0)

  • 首先:您不能假设C是Windows驱动器。 %HOMEDRIVE%的字母C不是强制性的。
  • 其次: 您也不能认为%USERHOME%位于驱动器C:\中的文件夹Users。
  • 第三:如果您使用构造并且前两个点都适用,则您的数据将不会同步到Windows域中基于服务器的配置文件。

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