0

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

以下代码获取文件:

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的情况下修改此文件?

4

1 回答 1

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

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

于 2012-10-17T19:44:11.030 回答