VB.NET中很多时候要用到文件地址,如果地址包含空格很有可能就不能正常读取,这个时候我们需要获取目录的短地址,以确定文件地址的有效性。
在声明处添加以下代码:
<DllImport("kernel32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
Public Shared Function GetShortPathName(ByVal lpszLongPath As String, _
<MarshalAs(UnmanagedType.LPTStr)> ByVal lpszShortPath As StringBuilder, _
<MarshalAs(UnmanagedType.U4)> ByVal cchBuffer As Integer) _
As Integer
End Function
再写个过程代码:
Private Sub GetShortPath(ByVal Path As String, ByRef ptShortPath As String)
Dim bf As New StringBuilder(1024)
Dim Result As Integer = GetShortPathName(Path, bf, 1024)
If Result <> 0 Then
ptShortPath = bf.ToString()
Else
Exit Sub
MessageBox.Show(Marshal.GetLastWin32Error().ToString(), "Info")
End If
End Sub
最后去调用这个过程即可,例如:
Dim Path As String = Application.StartupPath & "\1.mp3"
Dim ptShortPath As String = ""
GetShortPath(Path, ptShortPath)
执行以上代码后,ptShortPath 就被赋值了,也就是我们所需要的短地址
以上在vs2013中测试,不过从vb2008-vb2015或之后应该都是可以的,大家可以尝试下,有问题欢迎留言反馈。