1

我有一小段代码似乎是从 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。
  • 不会抛出异常。
  • 块执行后,我无法使用 Windows 资源管理器找到该文件。

在我看来,代码太简单了,在正常情况下不会失败。所以这就引出了我的问题:我的情况有什么问题?为什么保存似乎成功完成,但找不到文件?安全设定?代码本身?我不知所措。

更新

我已经尝试了更多的东西,但仍然没有运气。我以相同的症状在浏览器外运行应用程序,将其提升SaveFileDialog为类变量。应用程序的行为就像没有错误一样,但保存位置(我的 Documents 文件夹,在 Vista 中)中没有文件出现。

情节变厚了

我正在逐步调试调试器,并发现了其他奇怪的行为。调用 后saveDialog.OpenFile(),文件出现在目标位置。它在每个语句之后保留,但在调用writer.Close(). 为什么当流关闭时文件会被自动删除?

在此先感谢您的帮助!

4

0 回答 0