【问题标题】:How to read a text file on Xamarin Forms PCL project?如何读取 Xamarin Forms PCL 项目上的文本文件?
【发布时间】:2016-04-19 17:47:07
【问题描述】:

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

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 是什么。我发现它是我的程序集中的一种类型。但我无法真正理解它的含义。

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

有什么帮助吗?

谢谢

【问题讨论】:

标签: c# xamarin xamarin.forms


【解决方案1】:

要读取现有文件,您需要将 LoadResourceText 替换为您在 PCL 项目中拥有的类。它用于获取包含嵌入文件的程序集。您还需要将 WorkingWithFiles 替换为 PCL 项目的命名空间。

您需要添加using System.Reflection; 才能编译代码。

如果您想在运行时创建文件并稍后阅读,您可以像这样使用PCLStorage Library

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:PCL 项目中有这段代码吗?
  • 是的,在便携式项目中。
  • @Dpedrinha:使用 System.Reflection 添加;
  • 你去!谢谢!你是怎么发现的?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-07
  • 2017-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多