Xamarin 读取共享项目中的文件

Posted

技术标签:

【中文标题】Xamarin 读取共享项目中的文件【英文标题】:Xamarin read a file in shared Project 【发布时间】:2017-07-19 07:56:35 【问题描述】:

我正在尝试读取共享项目中的文件。

        var currentPath = Environment.CurrentDirectory;
        var filename = Path.Combine(currentPath, "File.txt");
        var content = File.ReadAllText(filename);
        return content;

如果我在 ios 中启动我的应用程序,这工作正常,但在 android 中我得到 FileNotFound 异常。

【问题讨论】:

【参考方案1】:

文件系统结构和底层 API 因平台而异。 Environment.CurrentDirectory在iOS上存在,但在Android和UWP上都不存在,所以它会有一个空值,因此找不到文件。

由于平台之间的文件系统差异很大,因此建议您将环境级别文件访问代码抽象到平台特定项目而不是共享项目 - 尽管您可以使用编译器指令使其工作。

#if __ANDROID__
var currentPath = Environment.DataDirectory;
#endif

或者,您可以尝试从Directory.GetCurrentDirectory(); 方法(在System.IO 命名空间中)获取当前目录

【讨论】:

没有 Environment.Datadirectory 可用 这是 android 特有的,这可能就是原因。你可以试试Directory.GetCurrentDirectory()? 我仍然得到 FilenotFoundException

以上是关于Xamarin 读取共享项目中的文件的主要内容,如果未能解决你的问题,请参考以下文章

Xamarin 共享项目或添加为链接?

如何加载存在于 Xamarin.iOS 中的共享库项目中的第二个 Storyboard

共享项目选项完全从 Visual Studio 2019 中的 Xamarin.Forms 项目菜单中消失?

我们可以在 Xamarin 共享项目中将多个分辨率图像作为嵌入文件吗?

共享项目中的 Xamarin Realm,错误“Fody 未正确安装”

Xamarin.Forms 在共享项目中设置图像源