这有效:
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)
答案 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提供了更好的选择。