1

这有效:

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)
4

2 回答 2

2

你可以稍微缩短你的代码:

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

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

于 2010-01-21T17:54:59.460 回答
1

不可重现。

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

但是FileMode.CreateNew如果文件已经存在则会失败,所以如果你使用一个固定的文件名,并且如果它是在之前的尝试中创建的一个空文件,那么这将解释这些症状。

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

于 2010-01-21T18:33:20.907 回答