Directory.createDirectory在iOS中创建文件而不是目录

时间:2016-10-06 13:01:13

标签: c# ios iphone unity3d directory

我必须在iOS设备上本地保存一些数据用于Unity游戏。 Unity提供

    Application.persistentDataPath

获取公共目录以保存数据。并在控制台上打印它显示这个返回iOS的路径是正确的,即/ Users / userName / Library / Developer / CoreSimulator / Devices / ******** - **** - **** - *** * - ************ /数据/集装箱/数据/应用/ ************ - ******** - *** ********* /文档/

因此,一个函数返回路径,另一个函数检查目录是否存在,如果不存在,则应创建一个目录,但它创建的FILE没有任何扩展名。这是我的代码

    void savePose(Pose pose){

        if (!Directory.Exists(PoseManager.poseDirectoryPath())){
            Directory.CreateDirectory(PoseManager.poseDirectoryPath());
            //Above line creates a file  
            //by the name of "SavedPoses" without any extension
        }
        // rest of the code goes here
    }

    static string poseDirectoryPath() {
        return Path.Combine(Application.persistentDataPath,"SavedPoses");
    }

1 个答案:

答案 0 :(得分:1)

可能的诽谤:

1 Path.Combine(Application.persistentDataPath,"SavedPoses");savedPoses之前添加反斜杠,而其他是正斜杠。也许这会导致iOS出现问题。在没有Path.Combine函数的情况下尝试连接原始字符串。

static string poseDirectoryPath() {
    return Application.persistentDataPath + "/" + "SavedPoses";
}

2 。如果Directory类无效,请使用DirectoryInfo类。

private void savePose(Pose pose)
{
    DirectoryInfo posePath = new DirectoryInfo(PoseManager.poseDirectoryPath());

    if (!posePath.Exists)
    {
        posePath.Create();
        Debug.Log("Directory created!");
    }
}

static string poseDirectoryPath()
{
    return Path.Combine(Application.persistentDataPath, "SavedPoses");
}

修改

可能是iOS上的权限问题。

您可以在StreamingAssets目录中创建该文件夹。您有权读取和写入此目录。

访问此权限的一般方法是使用Application.streamingAssetsPath/

在iOS上,也可以使用Application.dataPath + "/Raw"访问它。

在Android上,也可以使用"jar:file://" + Application.dataPath + "!/assets/";访问它,使用Application.dataPath + "/StreamingAssets";访问Windows和Mac。只需使用适合你的那个。

对于您的问题,Application.dataPath + "/Raw"+"/SavedPoses";应该这样做。