gpt4 book ai didi

c# - 在共享库 Xamarin c# 中读取文件

转载 作者:太空宇宙 更新时间:2023-11-03 20:54:58 25 4
gpt4 key购买 nike

我在共享库中保存了一些 .json 文件。

我已经设法通过代码在 iOS 中阅读得很好

string fileName = $"Files/file_name.json";

var path = Path.Combine(NSBundle.MainBundle.BundlePath, fileName);
using (var stream = new FileStream(path, FileMode.Open, FileAccess.Read))
using (var streaReader = new StreamReader(stream))
{
return streaReader.ReadToEnd();
}

但是,我一直在努力为 Android 做同样的事情。我无法从 Assets 中读取,因为它在共享库中。

using (var stream = Application.Context.Assets.Open("Files/file_name.json))

如果我在 Android 项目的 assets 文件夹下有文件,那么使用上面的 live 确实有效。

我想保留一份用于两个平台的文件副本。

最佳答案

  1. 将您的“共享”文件添加到您的解决方案中(在您的 PCL/NetStd/Shared 项目中的一个文件夹中即可,只需将构建类型设置为None)。

  2. 在您的 Android 项目中,创建一个指向 Assets 中构建类型为 AndroidAsset 的文件的链接

  3. 在您的 iOS 项目中,创建指向构建类型为 BundleResource 的文件的链接

安卓示例:

  <ItemGroup>
<AndroidAsset Include="..\Forms_30\her.png">
<Link>Assets\her.png</Link>
</AndroidAsset>
</ItemGroup>

iOS 示例:

  <ItemGroup>
<BundleResource Include="..\Forms_30\her.png">
<Link>her.png</Link>
</BundleResource>
</ItemGroup>

注意:您可以手动编辑 .csproj 或使用 PCL/NetStd 库中文件的起始位置从 Finder/Explorer 执行拖放操作,但让您选择 create放置文件时的链接

现在您可以通过 DI 使用您自己的平台相关代码或使用 Xamarin.Essentials 从您的 PCL/NetStd 库访问这些只读应用程序捆绑文件。

Xamarin.Essentials

using (var stream = await FileSystem.OpenAppPackageFileAsync("her.png"))
{
~~~
}

关于c# - 在共享库 Xamarin c# 中读取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51445888/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com