2017-05-31 86 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