我正在为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可读但不能使用相同的程序集/资源/流构造?
答案 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的回答。