2012-05-22 32 views
14

Làm cách nào để lập trình tệp đường dẫn tệp trong dự án của tôi?Nhận đường dẫn tệp của tệp trong dự án hiện tại của bạn

string fileContent = File.ReadAllText(LocalConstants.EMAIL_PATH); 

EMAIL_PATH tôi đã thêm vào dự án dưới dạng tệp văn bản. Dòng mã này ném một ngoại lệ vì theo mặc định nó đang tìm trong thư mục system32 vì một lý do nào đó. Tôi cần phải đặt nó vào thư mục dự án.

+0

Bạn có cần thư mục ứng dụng không? –

+0

Tôi thêm tệp văn bản vào dự án của mình. Tôi cần thư mục đó –

+0

Thư mục gốc của dự án là những gì tôi cần –

Trả lời

25

Bạn có thể sử dụng Path.CombineAppDomain.CurrentDomain.BaseDirectory:

string fileName = "SampleFile.txt"; 
string path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, LocalConstants.EMAIL_PATH, fileName); 

Returns trong một dự án thử nghiệm trong chế độ gỡ lỗi con đường này (khi LocalConstants.EMAIL_PATH="Emails"):

C:\****\****\Documents\Visual Studio 2010\Projects\WindowsApplication1\WindowsFormsApplication1\bin\Debug\Emails\SampleFile.txt 
+0

Mã này trỏ đến thư mục bin/Debug. EMAIL_PATH nằm trong thư mục gốc của dự án –

+0

Có lẽ vấn đề của tôi là tôi phải đặt các tệp văn bản để sao chép thành đầu ra. Đó có phải là điều tiêu chuẩn để làm không? –

+1

@NickLaMarca: Bạn đang tham khảo http://stackoverflow.com/a/857473/284240? Có lẽ, phụ thuộc vào yêu cầu chính xác của bạn. –

1

Bạn có thể sử dụng Environment.CurrentDirectory

Xem: http://msdn.microsoft.com/en-us/library/system.environment.currentdirectory.aspx

Để đọc thêm.

chỉnh sửa *

string temp = Path.GetDirectoryName(Assembly.GetExecutingAssembly().CodeBase);

sẽ làm như vậy và có lẽ là một chút an toàn hơn.

+0

Điều đó trỏ đến cửa sổ system32 thư mục –

+0

Nó sẽ trỏ đến nơi bao giờ thư mục làm việc của bạn. Tôi chỉ chạy một bản demo trên một ứng dụng giao diện điều khiển thử nghiệm và đầu ra là: "c: \ users \ duane \ documents \ visual studio 2010 \ Projects \ EnvironmentDemo \ EnvironmentDemo \ bin \ Debug", bạn có thể đăng chuỗi bạn nhận được từ thuộc tính này không ? – dtsg

+1

Thư mục hiện tại không phải lúc nào cũng là thư mục ứng dụng của bạn. Nếu đó là một tập tin hỗ trợ thì không an toàn để giả định điều này. –

0

Điều này làm việc cho tôi System.AppDomain.CurrentDomain.BaseDirectory.ToString()

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