首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C# (xamarin项目)无法找到文件的路径

C# (xamarin项目)无法找到文件的路径
EN

Stack Overflow用户
提问于 2022-03-18 08:07:47
回答 2查看 37关注 0票数 0

当我试图读取JSON文件(或任何文件)时,我遇到了这个问题:它找不到那个文件。我尝试一切,甚至绝对路径(错误几乎相同- DirectoryNotFound)。

这是矿井代码的结构:

,这是代码:

代码语言:javascript
复制
private void LoadJson()
{
    
    using (var r = new StreamReader("quizQuestions.json"))
    {
        string json = r.ReadToEnd();
        items = JsonConvert.DeserializeObject<List<Questions>>(json);
    }
}

我甚至尝试使用Directory.GetCurrentDirectory(),但是它正在返回:/ ->只返回这个字符。我不知道哪里是错误,或者我是不是忘了设置什么。我试图在任何地方找到答案,但我找不到任何答案。

EN

回答 2

Stack Overflow用户

发布于 2022-03-18 08:11:19

确保文件的Build设置为ContentAsset,并尝试一下。

代码语言:javascript
复制
private void LoadJson()
{
    AssetManager assets = this.Assets;
    using (var r = new StreamReader(assets.Open ("quizQuestions.json")))
    {
        string json = r.ReadToEnd();
        items = JsonConvert.DeserializeObject<List<Questions>>(json);
    }
}
票数 0
EN

Stack Overflow用户

发布于 2022-03-18 10:01:52

您可以将文件配置为Embedded Resource,然后按如下方式访问它:

代码语言:javascript
复制
public static Stream GetEmbeddedResourceStream(Assembly assembly, string resourceFileName)
{
    var resourceNames = assembly.GetManifestResourceNames();
    var resourcePaths = resourceNames
            .Where(x => x.EndsWith(resourceFileName, StringComparison.CurrentCultureIgnoreCase)).ToArray();

    if (resourcePaths.Any() && resourcePaths.Count() == 1)
    {
        return assembly.GetManifestResourceStream(resourcePaths.Single());
    }
    return null; // or throw Exception
}

private void LoadJson()
{
    Assembly assembly = GetAssemblyContainingTheJson();
    using (var r = GetEmbeddedResourceStream(assembly, "quizQuestions.json"))
    {
        string json = r.ReadToEnd();
        items = JsonConvert.DeserializeObject<List<Questions>>(json);
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71524026

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档