繁体   English   中英

Unity3D UnauthorizedAccessException:对路径的访问被拒绝

[英]Unity3D UnauthorizedAccessException: Access to the path is denied

我在Unity3D游戏中有惯用语,我意识到当我尝试在设备上创建文件夹时,某些Android设备会抛出UnauthorizedAccessException

看一下引发异常的代码:

static void SaveToCache(Entry entry, byte[] bytes) {
    if (entry.file != null) {
        string path = Path.GetDirectoryName(entry.file);
        try {
            if (!Directory.Exists(path)) Directory.CreateDirectory(path);
            File.WriteAllBytes(entry.file, bytes);          
        } catch (Exception ex) {
            Analytics.LogException(ex, "couldn't save to cache: " + path);
        }
    }
}

该代码对我来说看起来不错,但也许我遗漏了一些东西……它不会在我的测试设备上抛出-我仅从分析中获得堆栈跟踪。

更相关的代码是我构建路径的方式:

static readonly char DirectorySeparator = Path.DirectorySeparatorChar;    

static string BundleFile(string id, string languageCode) {
    StringBuilder sb = new StringBuilder();
    sb.Append(BundlePath());
    sb.Append(id);
    sb.Append("_");
    sb.Append(languageCode.ToLower());
    sb.Append(".json");
    return sb.ToString();
}

static string BundlePath() {
    StringBuilder sb = new StringBuilder();
    sb.Append(Application.persistentDataPath);
    sb.Append(DirectorySeparator);
    sb.Append("bundles");
    sb.Append(DirectorySeparator);
    return sb.ToString();
}

请告诉我那里是否有人有类似问题。 我不能依赖Application.persistentDataPath吗? 有没有更好的方法来构建缓存文件的路径?

我通过编写用于在android上处理持久性数据路径的工具包解决了该问题。 如果磁盘空间用完,这将检查写访问权限,甚至使用回退。

在这里找到代码

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM