从文件中抓取文本时路径中的非法字符?

时间:2017-05-31 19:39:47

标签: vb.net

我在路径中收到非法字符,但目录(路径)对每个人都不同,所以我没有为"路径"设置值,#" 39;用户在文件浏览器中选择的内容。

我还没有看到VB.net的解决方案,所以这里是我现在的代码:

myFileDlog.InitialDirectory = "c:\"
myFileDlog.Filter = "Txt Files (*.txt)|*.txt"
myFileDlog.FilterIndex = 2
myFileDlog.RestoreDirectory = True

If myFileDlog.ShowDialog() =
    DialogResult.OK Then
    If Dir(myFileDlog.FileName) <> "" Then

    Else
        MsgBox("File Not Found",
               MsgBoxStyle.Critical)
    End If
End If

'Adds the file directory to the text box
TextBox1.Text = myFileDlog.FileName
Dim fileReader As String
fileReader = My.Computer.FileSystem.ReadAllText(myFileDlog.FileName)
Dim lines() As String = IO.File.ReadAllLines(fileReader)

Dim lines() As String = IO.File.ReadAllLines(fileReader)

它违反了路径中的非法字符异常,而且我不确定如何测试非法字符的位置,因为它从您自己的文件目录中抓取。对此有何帮助?

1 个答案:

答案 0 :(得分:0)

问题源于这一行:

Dim fileReader As String = My.Computer.FileSystem.ReadAllText(myFileDlog.FileName)

fileReader从相应的文件名中获取所有字符串内容,并在下一行将其传递给File.ReadAllLines方法,如果内联中发现非法字符,则会向ArgumentException发送非法文件路径消息。

使用ReadAllLines读取文件内容的正确方法是使用预定义的文件路径或直接使用FileDialog.FileName属性作为下面给出的参数:

Using myFileDlog As OpenFileDialog = New OpenFileDialog()

   ' set dialog filters here

   If (myFileDlog.ShowDialog() = DialogResult.OK) Then
      If Dir(myFileDlog.FileName) <> "" Then
         Dim lines() As String = File.ReadAllLines(myFileDlog.FileName)

         For Each line As String In lines
            ' do something with file contents
         Next
      Else
         ' show "file not found" message box
      End If
   End If
End Using

由于ReadAllLines已被用于获取所有文件内容,因此可能不需要使用ReadAllText