2009-04-30 30 views
7

Tôi đang đọc một tập tin xml và muốn làm cho nó từ một thư mục tương đối dựa trên vị trí của ứng dụng, tương tự như ASP.NET với Server.MapPath hoặc sử dụng tilda.Cách tải từ đường dẫn tương đối trong ứng dụng WPF?

Làm cách nào để bạn có được đường dẫn tương đối trong WPF?

WORKS: XDocument xmlDoc = XDocument.Load(@"c:\testdata\customers.xml"); 
DOES NOT WORK: XDocument xmlDoc = XDocument.Load(@"~\Data\customers.xml"); 
DOES NOT WORK: XDocument xmlDoc = XDocument.Load(@"~/Data/customers.xml"); 

Trả lời

7
XDocument xmlDoc = XDocument.Load(@"Data\customers.xml"); 

HOẶC

XDocument xmlDoc = XDocument.Load(@".\Data\customers.xml"); 

BTW, này không có gì để làm với WPF và tất cả mọi thứ để làm với đường dẫn Windows.

+0

hmmm, không phải của những người dường như làm việc, tôi có tập tin customers.xml trên "Sao chép vào thư mục đầu ra = Sao chép luôn luôn", bất kỳ đề xuất nào khác? –

+0

Tôi đề nghị Environment.CurrentDirectory là những gì bạn mong đợi, và thực sự đảm bảo rằng tệp Customer.xml là nơi bạn mong đợi ở đầu ra. –

+0

thư mục chuỗi = System.IO.Directory.GetCurrentDirectory(); –

15
XDocument xmlDoc = XDocument.Load(
    Path.Combine(
     AppDomain.CurrentDomain.BaseDirectory, 
     @"Data\customers.xml")); 

Tôi giả định thư mục Data sẽ được triển khai với ứng dụng của bạn, trong cùng thư mục gốc với EXE của bạn. Điều này nói chung là an toàn, ngoại trừ việc sao chép bóng có liên quan; ví dụ, khi bạn sử dụng NUnit để kiểm tra mã này. (Với sao chép bóng, các hội tạo nên ứng dụng của bạn được sao chép vào một thư mục tạm thời, nhưng các tập tin như thế này vẫn còn lại.)

Giả sử bạn không có kế hoạch sửa đổi customers.xml sau khi triển khai, cách an toàn nhất để xử lý này là nhúng tệp dưới dạng tài nguyên trong hội đồng của bạn.

0

Hãy thử File.Create("./HiImHere.txt") để xem thư mục điểm ở đâu; sau đó thử đường dẫn liên quan đến nơi HiImHere.txt là.

+1

Tại sao downvote? –

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