ASP.NET,Streamwriter,Filestream - 0字节文件

时间:2010-01-21 17:42:22

标签: c# asp.net filestream streamwriter

这有效:

using (StreamWriter stw = new StreamWriter(Server.MapPath("\\xml\\file.xml")))
{
    stw.Write(xmlEncStr);
}

这会创建一个空文件:

using (FileStream file = new FileStream(Server.MapPath("\\xml\\file.xml"), FileMode.CreateNew))
{
    using (StreamWriter sw = new StreamWriter(file))
    {
        sw.Write(xmlEncStr);
    }
}

我尝试使用FileStream构造函数并尝试刷新,我仍然得到一个零字节文件。我写的字符串是一个简单的base64编码的ascii字符串,没有特殊字符。

我知道我可以使用第一个例子,但为什么第二个例子不起作用?

更新

这不是Filestream / StreamWriter问题 - 这是一个变量命名问题。我更正了上面的代码,所以现在两个版本都有效。我最初有:

StreamWriter strw = new StreamWriter(file)

2 个答案:

答案 0 :(得分:2)

您可以稍微缩短代码:

File.WriteAllText(Server.MapPath("\\xml\\file.xml"), xmlEncStr);

此外,MapPath方法接受相对或虚拟路径,并将其转换为服务器上的相应物理路径。 \\xml\\file.xml不属于上述情况。它应该是:~/xml/file.xml

答案 1 :(得分:1)

不可重复。

它不应该是ASP.NET问题,第二种形式应该有效(提供 sw == strw )。

但如果文件已存在,FileMode.CreateNew将失败,因此如果您使用固定文件名,并且如果它是在早期尝试期间创建的空文件,那么这将解释症状。

但@Darin Dimitrov提供了更好的选择。