如何在Xamarin Forms PCL项目中读取文本文件?

12

我需要在我的Xamarin.Forms PCL项目中读取文本文件(嵌入式资源)。 在Xamarin文档的working with files章节中建议使用以下代码:

var assembly = typeof(LoadResourceText).GetTypeInfo().Assembly;
Stream stream = assembly.GetManifestResourceStream("WorkingWithFiles.PCLTextResource.txt");
string text = "";
using (var reader = new System.IO.StreamReader (stream)) {
    text = reader.ReadToEnd ();
}

问题在于我找不到这个LoadResourceText是什么。我找到的只是它是我的程序集中的一种类型。但我真的不理解它的含义。

而且我找不到任何关于我需要做什么的清晰实用的解释。

有什么帮助吗?

谢谢


https://components.xamarin.com/view/pclstorage - Pucho Eric
PCL 存储无法用于现有的嵌入式资源文件。 - Dpedrinha
1个回答

13
为了读取一个现有文件,你需要用你在PCL项目中的类替换LoadResourceText。这个类用于获取包含嵌入文件的程序集。你还需要用你的PCL项目的命名空间替换WorkingWithFiles
为了使代码编译通过,你需要添加using System.Reflection;
如果你想在运行时创建一个文件并在以后读取它,你可以像这样使用PCLStorage库:
public async Task PCLStorageSample()
{
    IFolder rootFolder = FileSystem.Current.LocalStorage;
    IFolder folder = await rootFolder.CreateFolderAsync("MySubFolder",
        CreationCollisionOption.OpenIfExists);
    IFile file = await folder.CreateFileAsync("answer.txt",
        CreationCollisionOption.ReplaceExisting);
    await file.WriteAllTextAsync("42");
}

谢谢。我需要加载一个现有的嵌入式资源文件。如果我用我的项目中的任何类替换LoadResourceText,它会抱怨“类型不包含GetTypeInfo()的定义”。我正在查看文档中的示例项目,LoadResourceText也没有实现它。它只是一个普通的ContentPage。有什么想法吗? - Dpedrinha
@Dpedrinha:你在PCL项目中有这段代码吗? - Giorgi
是的,在可移植项目内部。 - Dpedrinha
好的,谢谢!你是怎么发现的? - Dpedrinha
@Dpedrinha:VS 2015建议添加缺失的using语句 :) - Giorgi
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接