winforms 如何创建文本文件并将文本追加到现有文件中?

hyrbngr7  于 2022-12-30  发布在  其他
关注(0)|答案(1)|浏览(230)

我正在尝试将textbox1的内容保存到计算机的文本文件中。
我想做的是创建一个保存目录,当它设置好后,我将把textbox1的内容保存到那个txt文件中。
不止一次,我想在之后将TextBox的内容追加到同一文件中。
Button2:尝试浏览和创建txt文件。
Button4(第一次单击):此按钮将textbox1的内容保存到创建的txt文件中。
Button4(第二次单击)":这将把textbox1的当前内容添加到相同的txt文件。
但我希望能够随时更改目录。
我还想选择代码外或文本框外的路径。
意思是,我想要一个按钮,让我选择一个文件夹,我想创建一个文本文件。
第2个按钮将让我将textbox1内容保存到创建的文本文件中。
这是我的一些代码,但我不知道我做的是否正确,因为它现在正在做我想做的事情。请帮助。

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Dim isave As New SaveFileDialog
        isave.Filter = "txt files (*.txt) |*.txt"
        isave.FilterIndex = 2
        isave.RestoreDirectory = False

        If isave.ShowDialog() = DialogResult.OK Then
            IO.File.WriteAllText(isave.FileName, TextBox1.Text)
        End If
    End Sub

Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
        Dim theText As String
        theText = TextBox1.Text
        IO.File.AppendAllText("isave", Environment.NewLine & theText)
End Sub
wrrgggsh

wrrgggsh1#

一种可能的方法是:

  • 使用字段(此处为lastSaveFileName)存储上次保存文件的路径。
  • 使用SaveFileDialog获取文件路径,将结果存储在lastSaveFileName
  • SaveFileDialog要求确认文件是否已经存在。用户可以选择是否覆盖它
  • 如果用户选择不覆盖现有文件(因此取消操作),则lastSaveFileName将被设置为空字符串,因此您无法向该文件追加新文本。
    如果这不是您预期的行为(即,您希望保留和更新在上一个 * 会话 * 中创建的文件),则删除sfd.OverwritePrompt = True并使用File.AppendAllText()代替File.WriteAllText()
  • 要更新所选文件并添加更多文本,请使用以前存储的lastSaveFileName引用
  • 如果该文件不存在(此时)或从未指定过,请提示用户先创建该文件。您也可以将文件路径存储在“项目设置”中

我已将按钮重命名为SaveFileUpdateFile,将文本框重命名为TextContent:最好为控件指定有意义的名称
SaveFileDialog对象必须用Using语句声明,因为你需要在它关闭时释放它(用ShowDialog()显示的窗口不能释放它自己。用Using语句声明一个可释放的对象,确保即使同时引发异常也能释放该对象;大部分时间)

Imports System.IO

Private lastSaveFileName As String = String.Empty

Private Sub SaveFile_Click(sender As Object, e As EventArgs) Handles SaveFile.Click
    lastSaveFileName = GetSaveFileName(lastSaveFileName)
    If Not String.IsNullOrEmpty(lastSaveFileName) Then
        File.WriteAllText(lastSaveFileName, TextContent.Text)
    End If
End Sub

Private Sub UpdateFile_Click(sender As Object, e As EventArgs) Handles UpdateFile.Click
    If Not String.IsNullOrEmpty(lastSaveFileName) AndAlso File.Exists(lastSaveFileName) Then
        File.AppendAllText(lastSaveFileName, Environment.NewLine & TextContent.Text)
    Else
        MessageBox.Show(
            Me, "The file has not been created yet [other instructions]",
            "Save file missing", MessageBoxButtons.OK, MessageBoxIcon.Information
        )
    End If
End Sub

Private Function GetSaveFileName(suggestedName As String) As String
    Using sfd As New SaveFileDialog()
        sfd.Filter = "Text Files (*.txt) |*.txt"
        sfd.FileName = suggestedName
        sfd.OverwritePrompt = True
        If sfd.ShowDialog() = DialogResult.OK Then
            Return sfd.FileName
        End If
        Return String.Empty
    End Using
End Function

相关问题