2010-04-07 61 views
11

Tôi đang viết một ứng dụng giao diện điều khiển VB.NET nơi nó có đường dẫn tương đối và nhổ ra tất cả các tên tệp hoặc lỗi cho đầu vào không hợp lệ. Tôi gặp sự cố khi nhận PhysicalPath từ đường dẫn tương đốiĐường dẫn tương đối đến đường dẫn tuyệt đối trong VB.NET

Ví dụ:

  1. Tôi đang ở thư mục C:\Documents and Settings\MehdiAnis.ULTIMATEBANGLA\My Documents\Visual Studio 2005\Projects\SP_Sol\SP_Proj\bin\Debug

  2. ứng dụng của tôi, SP.exe, cũng nằm trong cùng một thư mục.

  3. tôi chạy: "SP.exe ..\". Đầu ra sẽ là danh sách tất cả các tệp trong thư mục "C:\Documents and Settings\MehdiAnis.ULTIMATEBANGLA\My Documents\Visual Studio 2005\Projects\SP_Sol\SP_Proj\bin"

  4. Tôi chạy: "SP.exe ..\\..\". Đầu ra sẽ là danh sách tất cả các tệp trong thư mục "C:\Documents and Settings\MehdiAnis.ULTIMATEBANGLA\My Documents\Visual Studio 2005\Projects\SP_Sol\SP_Proj"

  5. Tôi chạy: "SP.exe ..\\..\\..\". Kết quả sẽ là một danh sách tất cả các file trong thư mục "C:\Documents and Settings\MehdiAnis.ULTIMATEBANGLA\My Documents\Visual Studio 2005\Projects\SP_Sol"

Hiện nay tôi đang xử lý một đường dẫn tương đối, nhưng không nhiều:

If Source.IndexOf("..\") = 0 Then 
     Dim Sibling As String = Directory.GetParent(Directory.GetCurrentDirectory()).ToString()()) 
     Source = Source.Replace("..\", Sibling) 
    End If 

Làm thế nào tôi có thể dễ dàng xử lý nhiều ..\?

Trả lời

22

Bạn đang tìm kiếm System.IO.Path.GetFullPath(). Nó sẽ xử lý bất kỳ loại đường dẫn tương đối nào.

+0

+1, Hãy đánh bại tôi! :) –

+0

Cảm ơn, Nó đã hoạt động! –

+0

@Mehdi: Vì đây có vẻ là giải pháp cho vấn đề của bạn, nên đánh dấu nó là câu trả lời bằng cách sử dụng dấu kiểm ở bên trái bên cạnh mũi tên lên/xuống. –

Các vấn đề liên quan