2017-05-31 82 views
0

我在路径中收到了非法字符,但目录(路径)对于每个人都是不同的,所以我没有为“路径”设置值,这是用户在文件资源管理器中选择的值。从文件中抓取文本时路径中存在非法字符?

我还没有看到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)

,突破与路径异常非法字符,而且我我不知道如何测试非法角色的位置,因为它是从你自己的文件目录中抓取的。任何帮助?

+3

'它从您自己的文件目录中抓取'不,该代码使用'myFileDlog.FileName'文件中的所有文本作为文件名 – Plutonix

+0

[** Autos窗口**](https://msdn.microsoft .com/en-us/library/bhawk8xd.aspx)是你的朋友。 –

回答

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使用率可能那里不必要。

+0

这工作。我最终使用它将文本文件的每一行放入一个列表框中进行存储。有一段时间有这个问题,很高兴我有一个修复。 – CodeMaster85