0

埋め込みリソースからストリームとしてロードされたファイルの内容を変更したい。

次のコードはファイルを取得します。

Stream theFile = Assembly.GetExecutingAssembly().GetManifestResourceStream("_3LinksFourmTool.Resources.fourmlinks.txt");

提供されたストリームに存在するテキストの文字列を受け取るメソッドを作成しました。文字列は、新しいコンテンツでストリームに書き換えられます。

public static void WriteNewTextToFile(string text, Stream theFile)
{

    string fileText = GetAllTextFromFile(theFile);
    ArrayList fileLIst = populateListFromText(fileText);

    using (StreamWriter fileWriter = new StreamWriter(theFile))
    {
        fileWriter.Write("");
        for (int i = 0; i < fileLIst.Count; i++)
        {
            fileWriter.WriteLine(fileLIst[i].ToString());        
        }
    }
}

上記のコードはSystem.ArgumentExceptionをスローします。

この例外は、テキストファイルが?であることに関係がありますEmbedded Resourceか?

System.ArgumentExceptionをスローせずにこのファイルを変更するにはどうすればよいですか?

4

1 に答える 1

5

実行可能ファイルが実行中であり、書き込みができないこともあり、実行時にリソースを変更することはできません。アセンブリだけがある場合は、外部のバイナリエディタを使用してそれらを変更するか、変更したファイルを使用してプロジェクトを再コンパイルできます。ほとんどのアプリプラットフォームでは、書き込みまたは実行用のリソースを開くには、最初にバイナリからファイルを抽出してから、そのファイルに対して操作を実行する必要があります。ただし、元に戻すことはできません。

設計/コンパイル時にリソースを操作する方法に関するリンクは次のとおりです。http://msdn.microsoft.com/en-us/library/7k989cfy%28v=vs.90%29.aspxhttp: //msdn.microsoft 。 com / en-us / library / cd818wbk%28v = vs.100%29.aspx

この場合、リソースの代わりに設定を使用することを検討しましたか?それらは実行時に保存できるので、テキスト値のものだけが必要な場合は、それでうまくいくはずです。

于 2012-10-17T19:44:11.030 に答える