在vb.net中打开、启动或显示供用户读取或写入的文件

在vb.net中打开、启动或显示供用户读取或写入的文件,vb.net,winforms,file-io,Vb.net,Winforms,File Io,听起来很简单,但我已经搜索过了,似乎找不到打开用户刚刚从我的windows窗体应用程序创建的日志文件的方法。文件退出,我只想在创建后打开它 我有一个Dim路径作为String=TextBox1.Text,一旦输入用户名并在savefiledialog上单击ok,我就有一个msgbox,上面写着“完成”,当你点击ok时,我就尝试了这个方法 FileOpen(FreeFile、path、OpenMode.Input)但什么也没发生。我只想让它打开日志并向用户显示,以便他们可以再次编辑或保存日志或其他

听起来很简单,但我已经搜索过了,似乎找不到打开用户刚刚从我的windows窗体应用程序创建的日志文件的方法。文件退出,我只想在创建后打开它

我有一个
Dim路径作为String=TextBox1.Text
,一旦输入用户名并在savefiledialog上单击ok,我就有一个msgbox,上面写着“完成”,当你点击ok时,我就尝试了这个方法

FileOpen(FreeFile、path、OpenMode.Input)
但什么也没发生。我只想让它打开日志并向用户显示,以便他们可以再次编辑或保存日志或其他任何内容

这就是我得到上述代码的地方。

搜索很困难,因为每个人都试图“打开”一个文件并在运行时处理它。我只是想通过
启动
显示一个文件,就像有人双击它一样。
这是整个导出按钮单击子按钮。它基本上将列表框项目写入文件

Private Sub btnExport_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExport.Click

    Dim sfd As New SaveFileDialog
    Dim path As String = TextBox1.Text
    Dim arypath() As String = Split(TextBox1.Text, "\")
    Dim pathDate As String
    Dim foldername As String
    foldername = arypath(arypath.Length - 1)

    pathDate = Now.ToString("yyyy-MM-dd") & "_" & Now.ToString("hh;mm")
    sfd.FileName = "FileScannerResults " & Chr(39) & foldername & Chr(39) & " " & pathDate

    sfd.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Personal)
    sfd.Filter = "Text files (*.txt)|*.txt|CSV Files (*.csv)|*.csv"
    sfd.ShowDialog()

    path = sfd.FileName

    Using SW As New IO.StreamWriter(path)

        If CkbxFolder.Checked = True Then
            SW.WriteLine("Folders")
            For Each itm As String In ListBox1.Items
                SW.WriteLine(itm)
            Next
        End If

        If CkbxFiles.Checked = True Then
            SW.WriteLine("Files")
            For Each itm As String In ListBox2.Items
                SW.WriteLine(itm)
            Next
        End If

    End Using
    MsgBox("Done...")
    FileOpen(FreeFile, path, OpenMode.Input) 'Why can't I open a file for you...

End Sub

不要使用旧的VB6方法。出于兼容性原因,它们仍然存在,新代码应该使用System.IO命名空间中更强大的方法


但是,正如评论中所说,FileOpen不会为您显示任何内容,只会打开文件

你可以写

Using  sr = new StreamReader(path)
    Dim line = sr.ReadLine()
    if !string.IsNullOrEmpty(line) Then
       textBoxForLog.AppendText(line)
    End If
End Using
或者简单地说(如果文件不是太大)

或者,您可以要求操作系统运行与文件扩展名关联的程序,并为您显示文件

Process.Start(path)

要获得与用户双击相同的行为,只需使用
System.Diagnostics.Process
,并将文件名传递给它的
Start
方法:

Process.Start(path)

这将根据文件扩展名使用默认应用程序打开文件,就像浏览器双击文件一样。

FileOpen不为您显示任何内容,只打开文件,现在取决于您阅读内容并在多行文本框中显示谢谢,我知道这很简单。
Process.Start(path)