【问题标题】:StreamWriter object doesn't work at allStreamWriter 对象根本不起作用
【发布时间】:2016-03-17 18:26:53
【问题描述】:

此代码在SaveFileDialog 中运行良好

private void buttonSaveAs_Click(object sender, EventArgs e)
        {
            try
            {
                if (selectedFileInfo != null)
                {
                    // Save File
                    SaveFileDialog saveFileDialog1 = new SaveFileDialog();
                    saveFileDialog1.InitialDirectory = explorerTree2.SelectedPath; 
                    // set a default file name
                    saveFileDialog1.FileName = Path.GetFileNameWithoutExtension(selectedFileInfo.Name) + "-COPY" + selectedFileInfo.Extension;
                    // set filters - this can be done in properties as well
                    saveFileDialog1.Filter = "HTM files (*.htm)|*.htm|HTML files (*.html)|*.html|XML files (*.xml)|*.xml|Text files (*.txt)|*.txt|All files (*.*)|*.*";

                    #region Define filter index

                    if (selectedFileInfo.Extension.Equals(".htm")) // HTM files (*.htm)|*.htm
                    {
                        saveFileDialog1.FilterIndex = 1;
                    }
                    else // All files (*.*)|*.*
                    {
                        saveFileDialog1.FilterIndex = 5;
                    }

                    #endregion

                    if (saveFileDialog1.ShowDialog() == DialogResult.OK)
                    {
                        using (StreamWriter sw = new StreamWriter(saveFileDialog1.FileName))
                        { 
                            sw.Write(scintilla1.Text);
                            sw.Flush();
                            sw.Close();
                        }
                    }
                }
            }
            catch (IOException ex)
            {
                MessageBox.Show(ex.Message);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

另一个没有。并且没有任何错误。有什么线索吗?

private void buttonSave_Click(object sender, EventArgs e)
{
    try
    {
        if (selectedFileInfo != null)
        {
            using (FileStream fs = new FileStream(selectedFileInfo.Name, FileMode.OpenOrCreate, FileAccess.ReadWrite))
            {
                StreamWriter sw = new StreamWriter(fs);
                sw.AutoFlush = true;
                sw.Write(scintilla1.Text);                       
                sw.Flush();
                sw.Close();
            }

        }
    }
    catch (IOException ex)
    {
        MessageBox.Show(ex.Message);
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}

附注此选项也不起作用

 using (FileStream fs = new FileStream(selectedFileInfo.Name, FileMode.OpenOrCreate, FileAccess.ReadWrite))
   {
         using (StreamWriter sw = new StreamWriter(fs))
         {
               sw.AutoFlush = true;
               sw.Write(scintilla1.Text);
               sw.Flush();
               sw.Close();
         } 
}

【问题讨论】:

  • " 还有任何错误。"那么这个错误是什么,它发生在哪一行?
  • @B.ClayShannon 没有任何错误。
  • 调试器在这里可以提供很大帮助。 selectedFileInfo.Name 的值是多少
  • @Steve 它具有文件 inc 的完整路径。文件名。
  • 观察到的错误行为是什么?如果它没有在文件中写入任何内容,则尝试将 StreamWriter 也放入 using 块中

标签: c# .net filestream streamwriter writetofile


【解决方案1】:

我找到了正确的解决方案

scintilla1.Text 是你必须写的字符串 selectedFileInfo 是一个FileInfo 对象。在您的情况下,scintilla1.Text 可能类似于 stringRichTextBox 或任何其他文本编辑器控件。

  private void buttonSave_Click(object sender, EventArgs e)
        {
            if (selectedFileInfo != null)
            {
                FileStream stream = null;

                try
                {
                    stream = selectedFileInfo.Open(FileMode.Open, FileAccess.ReadWrite, FileShare.None);
                    using (StreamWriter sw = new StreamWriter(stream))
                    {
                        sw.AutoFlush = true;
                        sw.Write(scintilla1.Text);
                        sw.Flush();
                        sw.Close();
                    }
                }
                catch (IOException ex)
                {
                    MessageBox.Show(ex.Message);
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
                finally
                {
                    if (stream != null)
                        stream.Close();
                }
            }
        }

【讨论】:

    猜你喜欢
    • 2017-11-27
    • 1970-01-01
    • 1970-01-01
    • 2012-11-01
    • 2018-07-13
    • 2017-03-23
    • 1970-01-01
    • 2011-06-25
    • 1970-01-01
    相关资源
    最近更新 更多