ResXResourceWriter不写入流?

时间:2013-09-23 18:02:46

标签: c# stream resx

我正在尝试创建一个resx文件并将其写入流,以便我可以将其作为字符串返回,而不是立即将其保存到文件中。但是,当我尝试读取该流时,它是空的。我在这做错了什么?我确实验证条目不为空。我实际上可以使用ResXResourceWriter构造函数将其成功保存到磁盘,但我正在尝试避免使用临时文件。此外,我可以看到流在循环之前是0k,在循环之后是大约8k。

using (var stream = new MemoryStream())
{
    using (var resx = new ResXResourceWriter(stream))
    {
        // build the resx and write to memory
        foreach (var entry in InputFile.Entries.Values)
        {
            resx.AddResource(new ResXDataNode(entry.Key, entry.Value) { Comment = entry.Comment });
        }

        var reader = new StreamReader(stream);
        var text = reader.ReadToEnd(); // text is an empty string here!

        return null;
    }
}

1 个答案:

答案 0 :(得分:1)

在尝试读取之前,您需要刷新并重置输出/流。这应该有效,使用GeneratePosition

resx.Generate();
stream.Position = 0;
var reader = new StreamReader(stream);
var text = reader.ReadToEnd();
return text;