2017-02-18 3 views
2

AndroidおよびiOS用のXamarin.Form PLCを作成していて、アプリケーションファイルをテキストファイルの埋め込みリソースに書き込む必要がある場所があります。私はただのStreamReaderを使用して、同じ構文を使用して、首尾よく同じテキストファイルからの読み込み実装しましたが、StreamWriterの実装は、次のようになります。Xamarin.FormsのStreamWriterでArgumentExceptionが発生しました

   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は、System.IOで「ストリームが書き込み可能ではありません」の引数を投げています.StreamWriter。私は何かobvsiously間違っているのですか?なぜストリームは読み込み可能ですが、書き込み可能ではないのは同じアセンブリ/リソース/ストリームの構築ですか?

+1

あなたのアプリのパッケージ内のリソースに書き込もうとしています。パッケージは署名されていて書き込み可能ではありません(これはiOSでも同様です)。ファイルに書き込む場合は、パッケージ構造の一部ではない書き込み可能なフォルダーを選択する必要があります。 – Jason

答えて

2

GetManifestResourceStreamのストリームは書き込み可能ではありません。ストリームのファイルは、ビルド時にアセンブリに埋め込まれ、変更することはできません。書き込む前にファイルをディスクに書き込む必要があります。

これ以降、ディスク上のファイルを読み書きできます。

1

あなたが書きたいものによっては、それがアプリケーション設定のようなものなら、Application.Propertiesコレクションhttp://www.kymphillpotts.com/exploring-xamarin-forms-1-3-properties-dictionary/を使うことができます。そうでなければJonの答えに同意します。

+1

Application.Propertiesについて知りませんでしたが、これは非常に便利なようです!私が尋ねていた場合、これは完璧な答えです! (upvote)。 Jonに緑色のチェックマークを付けると、アプリケーション設定をディスクに書き込む必要があることがあるので、私はあなたに両方の答えを与えたいと思います。 –

+0

ありがとう、私は気にしない –

関連する問題