private void 另存为ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            saveFileDialog1.InitialDirectory = "C:\\C#";
            saveFileDialog1.Filter = "文本文件(*.txt)|*.txt|Word文件(*.doc)|*.doc|所有文件(*.*)|*.*";
            DialogResult r = saveFileDialog1.ShowDialog();
            if (r == DialogResult.OK)
            {
                try
                { 
          File.Create(saveFileDialog1.FileName);
                    StreamWriter sw = new StreamWriter(ss, true, System.Text.Encoding.Default);
                    sw.WriteLine("hello");
                    sw.Close();
                }
                catch
                {                }
            }
        }
        用保存对话框的文件名创建一个文件,然后写入“hello”,但只创建文件却是空的。不知原因何在?

解决方案 »

  1.   


    //这是一个导出txt的 测试可用 你看看吧.
            /// <summary>
            /// 导出文件
            /// </summary>
            /// <param name="name">文件名</param>
            /// <param name="nr">写入的内容</param>
            public void DaoChu(string name,string nr)
            {
                        folderBrowserDialog1.ShowDialog();
                        if (folderBrowserDialog1.SelectedPath != "")
                        {
                            string path = folderBrowserDialog1.SelectedPath + "\\" +name+ ".txt";
                            if (!File.Exists(path))
                            {
                                FileStream fs1 = new FileStream(path, FileMode.Create, FileAccess.Write);//创建写入文件    
                                StreamWriter sw = new StreamWriter(fs1);
                                sw.Write(nr);
                                sw.Close();
                                fs1.Close();
                            }
                            DialogResult dr = MessageBox.Show("导出成功!您要打开 " + path + " 文件查看吗?", "选择", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                            if (dr == DialogResult.Yes)
                            {
                                if (!File.Exists(path))
                                {
                                    MessageBox.Show("指定文件不存在!", "操作提示");
                                    return;
                                }
                                //存在则打开
                                System.Diagnostics.Process.Start(path);                        }                    }        }
      

  2.   

    File.Create(saveFileDialog1.FileName);
    去掉。
    写成这个 StreamWriter sw = new StreamWriter(saveFileDialog1.FileName, true, System.Text.Encoding.Default);
                        sw.WriteLine("hello");
                        sw.Close();
                        MessageBox.Show("success");
      

  3.   

    ...汗你不是用saveFileDialog 这个就打开保存框让你找地方保存。出现保存框然后输入你想保存的名字。然后就OK了。
      

  4.   

    但是我要自己保存一个新的文件啊,所以才会用File创建一个文件的啊
      

  5.   

    StreamWriter sw = new StreamWriter(ss, true, System.Text.Encoding.Default);
    ss是神马??
    LZ可以不要用File.Create去先创建文件,StreamWritter有个参数可以指定文件名,木有的话就会创建文件,我感觉你这sw里的SS应该是上面的文件绝对路径名,
    看着怪怪的
      

  6.   

    LZ你自己的代码写入的是SS对应的文件
      

  7.   

    File.Create()方法创建了一个指向该文件的FileStream,MSDN上的解释是:由此方法创建的 FileStream 对象的 FileShare 值默认为 None;直到关闭原始文件句柄后,其他进程或代码才能访问这个创建的文件。所以LZ你后面的代码没法访问这个文件,所以"Hello”写不进去
      

  8.   

    本身saveFileDialog 就是输入创建名称然后保存 就会自动创建。你在创建不是多此一举。如果在创建的话就不用saveFileDialog 了