更改Embedded Resources文件中的内容

时间:2012-10-17 19:33:07

标签: c# text text-files

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

以下代码获取文件:

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

我创建了一个方法,它接受提供的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());        
        }
    }
}

以上代码会抛出System.ArgumentException

此异常是否与Embedded Resource的文本文件有关?

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

1 个答案:

答案 0 :(得分:4)

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

这里有一些关于如何在设计/编译时操纵资源的链接: 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

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