使用SaveFileDialog将数据保存到文本文件中?

4

我已经查看了MSDN示例,但是仍然遇到问题。

我创建了一个超级简单的程序来乘以两个数字,并在文本框中显示输出。现在我需要能够读取该文本框的值并将值放入文本文件中,在单击“保存到文件”按钮时弹出保存对话框。

Private Sub MutiplyBtn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MutiplyBtn.Click
    Dim FirstNum As Double = Num1.Text
    Dim SecondNum As Double = Num2.Text
    Dim Answer2 As Double = FirstNum * SecondNum
    Answerbox.Text = Answer2
End Sub

Private Sub SaveResultToFile_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SaveResultToFile.Click
    Dim myStream As Stream
    Dim saveFileDialog1 As New SaveFileDialog()

    saveFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"
    saveFileDialog1.FilterIndex = 2
    saveFileDialog1.RestoreDirectory = True

    If saveFileDialog1.ShowDialog() = DialogResult.OK Then
        myStream = saveFileDialog1.OpenFile()
        If (myStream IsNot Nothing) Then
            System.IO.File.WriteAllText(Answerbox.Text)
            myStream.Close()
        End If
    End If
End Sub

目前,Visual Studio 给我报错了:由于没有可访问的'WriteAllText'接受此数量的参数,重载分辨失败。

2个回答

5

WriteAllText静态方法需要指定数据写入的文件名。
您可以直接使用saveFileDialog1中选择的文件名。

If saveFileDialog1.ShowDialog() = DialogResult.OK Then
    System.IO.File.WriteAllText(saveFiledialog1.FileName, Answerbox.Text)
End If

如果您真的想使用由OpenFile()方法打开的流,请使用以下代码:

   If saveFileDialog1.ShowDialog() = DialogResult.OK Then
        Dim sw As StreamWriter = new StreamWriter(saveFileDialog1.OpenFile())
        If (sw IsNot Nothing) Then 
            sw.WriteLine(Answerbox.Text)
            sw.Close()
        End If 
    End If 

这段代码是一个例子,你需要添加一些错误处理的代码。


Steve,这个很完美,但是它总是覆盖数据。如何将文本追加到文件末尾? - Mikhail_Sam
@Mikhail_Sam File.AppendAllText - Steve
请使用不同的StreamWriter构造函数 - Steve
Steve,非常感谢您的快速回复!我无法弄清如何在saveFileDialog中使用StreamWriter构造函数:saveFileDialog.OpenFile()返回Stream,但SW构造函数需要一个字符串作为参数!我不明白如何为流创建构造函数。您能展示一些例子吗? - Mikhail_Sam
Steve,请看一下这个链接:http://stackoverflow.com/questions/43275797/how-to-append-data-to-file-using-savefiledialog - Mikhail_Sam
显示剩余2条评论

1

你好,我尝试了上述方法,但我是通过以下方式成功的...

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
   SaveFileDialog1.Filter = "TXT Files (*.txt*)|*.txt"
      If SaveFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK _
      Then
         My.Computer.FileSystem.WriteAllText _
         (SaveFileDialog1.FileName, RichTextBox1.Text, True)
      End If
End Sub

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接