更改嵌入式资源文件中的内容

sam*_*amy 0 c# text text-files

我想更改从嵌入资源作为加载的文件的内容。

以下代码获取文件:

Stream theFile = Assembly.GetExecutingAssembly().GetManifestResourceStream("_3LinksFourmTool.Resources.fourmlinks.txt");
Run Code Online (Sandbox Code Playgroud)

我创建了一个方法,该方法采用提供的Stream 中存在的文本字符串。该字符串将使用新内容重写到Stream

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());        
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

上面的代码抛出System.ArgumentException

此异常与文本文件是Embedded Resource?

如何在不抛出System.ArgumentException 的情况下修改此文件?

Fra*_*mas 5

无法在运行时修改资源,部分原因是当时可执行文件正在执行,并且无法对其进行写入。您可以使用外部二进制编辑器来修改它们,如果您只有程序集,或者您可以使用更改后的文件重新编译您的项目。在大多数应用程序平台中,为了打开一个资源进行写入或执行,您必须首先从二进制文件中提取文件,然后对其执行操作。但是你不能把它放回去。

这里有一些关于如何在设计/编译时操作资源的链接:http : //msdn.microsoft.com/en-us/library/7k989cfy%28v=vs.90%29.aspx http://msdn.microsoft。 com/en-us/library/cd818wbk%28v=vs.100%29.aspx

在这种情况下,您是否考虑过使用设置而不是资源?它们可以在运行时保存,所以如果你只需要文本值的东西,那应该很适合你。