【问题标题】:Illegal Characters in path when grabbing text from a file?从文件中获取文本时路径中的非法字符?
【发布时间】:2017-05-31 19:39:47
【问题描述】:

我在路径中得到非法字符,但每个人的目录(路径)都会不同,所以我没有为“路径”设置值,这是用户在文件资源管理器中选择的值。

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

它与路径中的非法字符异常中断,我不确定如何测试非法字符的位置,因为它是从您自己的文件目录中获取的。有什么帮助吗?

【问题讨论】:

  • it's grabbing from your own file directory 不,该代码使用 myFileDlog.FileName 文件中的所有文本作为文件名
  • Autos window 是你的朋友。

标签: vb.net


【解决方案1】:

问题源于这一行:

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

【讨论】:

  • 这行得通。我最终使用它将文本文件的每一行放入一个列表框中进行存储。这个问题已经有一段时间了,很高兴我能解决。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-19
  • 1970-01-01
相关资源
最近更新 更多