我有一小段代码似乎是从Silverlight 4.0保存文件的教科书示例,但它似乎不起作用。
以下代码段来自按钮点击处理程序:
var saveDialog = new SaveFileDialog() { Filter = "All Files(*.*)|*.*" };
if (saveDialog.ShowDialog() == true)
{
using (var stream = saveDialog.OpenFile())
using (var writer = new StreamWriter(stream))
{
writer.WriteLine("Hello, World!");
writer.Flush();
writer.Close();
}
}
我尝试将文件保存到许多不同的位置,所有这些都具有相同的行为:
SaveFileDialog
似乎表现正常。SaveFileStream
(来自调试器)以正常运行。writer.Flush()
后,BaseStream
前进至第15位。在我看来,代码太简单了,在正常情况下不能失败。这就引出了我的问题:我的情况有什么不妥?为什么保存似乎成功完成,但文件无处可寻?安全设定?代码本身?我很茫然。
更新
我尝试过更多的东西,但仍然没有运气。我在浏览器外运行了具有相同症状的应用程序,将SaveFileDialog
提升为类变量。该应用程序的行为类似于没有错误,但保存位置(我的Documents文件夹,在Vista中)中没有文件出现。
情节变浓
我正在使用调试器,发现了其他奇怪的行为。致电saveDialog.OpenFile()
后,该文件将显示在目标位置。它保留在每个语句之后,但在调用writer.Close()
后被删除。为什么在流关闭时会自动删除文件?
提前感谢您的帮助!