我在路径中收到非法字符,但目录(路径)对每个人都不同,所以我没有为"路径"设置值,#" 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)
它违反了路径中的非法字符异常,而且我不确定如何测试非法字符的位置,因为它从您自己的文件目录中抓取。对此有何帮助?
答案 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
。