首页 > 解决方案 > 如何访问 Xamarin.Form 应用程序中的文件?

问题描述

我目前正在使用 Xamarin Form (Android) 编写一个小工具,它获取一些文件内容并以某种特定方式显示它们。在这些文件中,我有一些应该嵌入到文件显示中的交叉链接(例如 jpeg 图像)。

要获取主文件,我正在使用“CrossFilePicker.Current.PickFile()”。它返回一个“FileData”对象,该对象已经包含主文件内容以及该文件的 URI。

如果该文件中有交叉链接,我可以假设链接文件与主文件位于同一文件夹中。

我的想法(以 jpeg 为例)获取文件的基本文件夹并附加 jpeg 的名称,然后将图像作为流打开:

ImagePath = Path.Combine(baseFolder.Trim(), imageFile.Trim());

try
{
    fileStream = new FileStream(ImagePath, FileMode.Open, FileAccess.Read);
    fileStream.DisposeWith(Disposables);

    ImageSource = ImageSource.FromStream(() => fileStream);
    ShowImage = true;
}
catch
{
    // Ignore
}

不幸的是 FileStream 失败,并声称它找不到包含目录。

通往 JPG 的路径如下所示:

/document/0F1E-120D/TestData/P1060371.jpg

我从 Picker 得到的文件路径是:

content://com.android.externalstorage.documents/document/0F1E-120D%3ATestData%2FTestFile.txt

使用该 URI,我可以提取本地路径:

/document/0F1E-120D:TestData/TestFile.txt

删除文件名时我得到

/document/0F1E-120D:TestData

显然该路径无效...

关于如何获得可以输入 FileStream 以读取文件的有效路径的任何提示?关于我必须注意的权限的更多提示?目前我已经设置了 READ_EXTERNAL_STORAGE

标签: c#xamarin.formsxamarin.android

解决方案


如果您使用NetStandard2.0,请使用此代码

System.IO.File.ReadAllBytes(filePath);

它也适用于特定平台(例如:Xamarin.Android、Xamarin.iOS 等)


推荐阅读