Xamarin.Forms中StreamWriter中的ArgumentException

时间:2017-02-18 15:26:39

标签: c# xamarin xamarin.forms

我正在为Android和iOS编写一个Xamarin.Form PLC,并且我需要将一些应用程序内容写入文本文件嵌入式资源。我已成功实现了从同一文本文件中读取,使用相同的语法只使用StreamReader,但StreamWriter实现如下所示:

                Assembly assembly = GetType().GetTypeInfo().Assembly;
                string resource = "jetStream.Results.settings.txt";
                using (Stream stream = assembly.GetManifestResourceStream(resource)) {
                    using (StreamWriter writer = new StreamWriter(stream)) {
                       //do stuff
                    }
                }

StreamWriter正在抛出" Stream不可写的参数"在System.IO.StreamWriter。我做错了什么吗?为什么Stream可读但不能使用相同的程序集/资源/流构造?

2 个答案:

答案 0 :(得分:2)

来自GetManifestResourceStream的流不可写。流的文件在构建时嵌入到程序集中,无法更改。在写入文件之前,您必须将文件写入磁盘。

string resource = "jetStream.Results.settings.txt";
using (Stream stream = assembly.GetManifestResourceStream(resource))
using (var fs = new FileStream(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal)), FileMode.Create, FileAccess.Write))
using (var stream = new MemoryStream())
using (var writer = new StreamWriter(fs))
{
    rStream.Stream.CopyTo(stream);
    writer.Write(stream.ToArray());
}

在此之后,您可以读取和写入磁盘上的文件。

答案 1 :(得分:1)

根据您要编写的内容,如果它只是应用程序设置之类的内容,您可以使用Application.Properties集合http://www.kymphillpotts.com/exploring-xamarin-forms-1-3-properties-dictionary/,否则我同意Jon的回答。