没有创建文件时出现异常 System.IO.IO.Exception

Exception System.IO.IO.Exception when there is no file created

而运行下面的代码:

Public Class Form4
'Public LAST_USER As String = "last user: uidxxxxx"
Friend WithEvents LastUser As System.Windows.Forms.TextBox
Private Sub checkFile()
    If File.Exists("D:\Tebenator\userid.txt") = False Then
        Try
            File.Create("D:\Tebenator\userid.txt")
            ' Info()
        Catch ex As Exception
            MsgBox("Exception:" + ex.ToString)
        End Try
    Else
        Info()
    End If

End Sub
Private Sub Info()

    Dim line As String
    Dim objReader As New System.IO.StreamReader("D:\Tebenator\userid.txt")
    Do While objReader.Peek() <> -1
        line = objReader.ReadLine
        If (String.IsNullOrEmpty(line.ToString)) Then
            TextBox1.Text = " Last session info:" & Environment.NewLine +
                    "-Last user : uidxxxxx" & Environment.NewLine +
                                "-Session closed: (manual or automatically at xx:xx (local)"
            Exit Do
        Else
            If (line.StartsWith("last_user")) Then
                Dim a() As String
                a = Split(line, "uid")
                If (String.IsNullOrWhiteSpace(a.ToString)) Then
                    TextBox1.Text = " Last session info:" & Environment.NewLine +
                     "-Last user : uidxxxxx" & Environment.NewLine +
                                 "-Session closed: (manual or automatically at xx:xx (local)"
                Else

                    For i As Integer = 0 To a.Length - 1
                        Dim info As System.IO.FileInfo
                        info = My.Computer.FileSystem.GetFileInfo("D:\Tebenator\userid.txt")
                        TextBox1.Text = " Last session info:" & Environment.NewLine +
                        "-Last user :uid" + a(i) & Environment.NewLine +
                                    "-Session closed: (manual or automatically on " + info.LastWriteTime + ")"

                    Next

                End If
            End If
        End If
    Loop
    objReader.Close()

End Sub
Private Sub Form4_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    'checkFile()
    Projects.Items.Add("A")
    Projects.Items.Add("B")
    Projects.Items.Add("C")
End Sub
Private Sub PictureBoxLogo_Click(sender As Object, e As EventArgs) Handles PictureBoxLogo.Click
    Dim path As String
    path = System.IO.Path.GetDirectoryName( _
       System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase)

    'System.Diagnostics.Process.Start(path & "\kill tebenator.exe")
End Sub

Private Sub LinkLabelMapDrives_LinkClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles LinkLabelMapDrives.LinkClicked
    Form2.Show()
End Sub

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Button1.FlatAppearance.BorderColor = Color.Orange
End Sub

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    Button2.FlatAppearance.BorderColor = Color.Orange
    If MessageBox.Show("Confirm SHUT DOWN action?", "Tebenator Demon: Shutting down ..", MessageBoxButtons.YesNo) = Windows.Forms.DialogResult.Yes Then
        Me.Close()
    End If
End Sub


Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
    Button3.FlatAppearance.BorderColor = Color.Orange
    Form3.Show()
End Sub


Private Sub ButtonStartSession_Click(sender As Object, e As EventArgs) Handles ButtonStartSession.Click

    Dim Path1 As String
    Path1 = "D:\users\Popa Andrei\project\Prj_A"
    Dim Path2 As String
    Path2 = "D:\users\Popa Andrei\project\Prj_B"
    Dim Path3 As String
    Path3 = "D:\users\Popa Andrei\project\Prj_C"
    Dim id As Integer
    id = Convert.ToInt32(TextBoxUid.Text)
    If (id > 9999) Then
        MessageBox.Show("Uid too long,please modify.", "Error!", MessageBoxButtons.OK)
    ElseIf (id < 1000) Then
        MessageBox.Show("Uid too short,pleaste modify.", "Error!", MessageBoxButtons.OK)
    Else
        Dim SelectedItem As Object

        SelectedItem = Projects.SelectedItem

        If (SelectedItem.ToString() Is "A") Then
            Dim Folder As String = My.Computer.FileSystem.SpecialDirectories.Desktop + " \Dir_Project_" + SelectedItem.ToString

            If Directory.Exists(Folder) = False Then
                Try
                    Directory.CreateDirectory(Folder)
                Catch ex As Exception

                End Try
            End If
            For Each _File As String In Directory.GetFiles(Folder)
                File.Delete(_File)
            Next
            My.Computer.FileSystem.CopyDirectory(Path1, Folder.ToString, True)
            Process.Start(Folder)
        End If
        If (SelectedItem.ToString() Is "B") Then
            Dim Folder As String = My.Computer.FileSystem.SpecialDirectories.Desktop + " \Dir_Project_" + SelectedItem.ToString

            If Directory.Exists(Folder) = False Then
                Try
                    Directory.CreateDirectory(Folder)
                Catch ex As Exception

                End Try
            End If
            For Each _File As String In Directory.GetFiles(Folder)
                File.Delete(_File)
            Next
            My.Computer.FileSystem.CopyDirectory(Path2, Folder.ToString, True)
            Process.Start(Folder)
        End If
        If (SelectedItem.ToString() Is "C") Then
            Dim Folder As String = My.Computer.FileSystem.SpecialDirectories.Desktop + " \Dir_Project_" + SelectedItem.ToString

            If Directory.Exists(Folder) = False Then
                Try
                    Directory.CreateDirectory(Folder)
                Catch ex As Exception

                End Try
            End If
            For Each _File As String In Directory.GetFiles(Folder)
                File.Delete(_File)
            Next
            My.Computer.FileSystem.CopyDirectory(Path3, Folder.ToString, True)
            Process.Start(Folder)
        End If

        Dim File_Name As String = "D:\Tebenator\userid.txt"
        Try
            If File.Exists(File_Name) Then
                Dim objWriter As New System.IO.StreamWriter(File_Name, True)
                objWriter.Write("last_user=uid" + TextBoxUid.Text)
                objWriter.Close()
            End If
        Catch ex As Exception
            MsgBox("Exception:" + ex.ToString)

        End Try

        End If
End Sub

Public Sub New()

    ' This call is required by the designer.
    InitializeComponent()

    ' Add any initialization after the InitializeComponent() call.
    checkFile()
End Sub
End Class

表单正确加载,我输入 uid 值然后 select 项目但是当我单击“开始会话”时我在第 168 行收到以下错误(Dim objWriter As New System.IO.StreamWriter(File_Name, 真)):

'System.IO.IOException' 类型的第一次机会异常发生在 mscorlib.dll

正确的方法是修改checkFile方法,像这样:

Private Sub checkFile()
    If File.Exists("D:\Tebenator\userid.txt") = False Then
        Try
            Dim f As FileStream = File.Create("D:\Tebenator\userid.txt")
            f.Close()
        Catch ex As Exception
            MsgBox("Exception:" + ex.ToString)
        End Try
    Else

    End If

End Sub