2013-10-12 15 views
5

Tôi đang làm việc trên một dự án cho một lớp học. Những gì tôi phải làm là xuất khẩu hướng dẫn phân tích cú pháp vào một tập tin. Microsoft có ví dụ này giải thích cách ghi vào một tệp:Ghi tệp vào thư mục dự án trên bất kỳ máy tính nào

// Compose a string that consists of three lines. 
string lines = "First line.\r\nSecond line.\r\nThird line."; 

// Write the string to a file. 
System.IO.StreamWriter file = new System.IO.StreamWriter("c:\\test.txt"); 
file.WriteLine(lines); 

file.Close(); 

Tôi ổn với phần đó, nhưng có cách nào để ghi tệp vào môi trường/vị trí hiện tại của dự án không? Tôi muốn làm điều đó thay vì viết mã cứng một con đường cụ thể (ví dụ: "C:\\test.txt").

Trả lời

16

Có, chỉ cần sử dụng đường dẫn tương đối. Nếu bạn sử dụng @".\test.txt" (btw the @ chỉ nói rằng tôi đang làm một chuỗi chữ, nó loại bỏ sự cần thiết cho các ký tự thoát để bạn cũng có thể làm ".\\test.txt" và nó sẽ viết vào cùng một vị trí) nó sẽ ghi các tập tin vào làm việc hiện tại thư mục trong hầu hết các trường hợp là thư mục chứa chương trình của bạn.

+0

Ngọt. Ngắn và cho điểm. Cảm ơn rất nhiều! – blutuu

8

Bạn có thể sử dụng Assembly.GetExecutingAssembly().Location để nhận đường dẫn lắp ráp chính của bạn (.exe). Lưu ý rằng nếu đường dẫn đó nằm trong một thư mục được bảo vệ (ví dụ: Program Files), bạn sẽ không thể viết ở đó trừ khi người dùng là quản trị viên - đừng dựa vào điều này.

Đây là mã mẫu:

string path = System.Reflection.Assembly.GetExecutingAssembly().Location; 
string fileName = Path.Combine(path, "test.txt"); 

This question/answer cho thấy làm thế nào để có được thư mục profile của người dùng nơi bạn sẽ có quyền ghi. Ngoài ra, bạn có thể sử dụng thư mục My Documents của người dùng để lưu tệp - một lần nữa, bạn được đảm bảo có quyền truy cập vào tệp. Bạn có thể lấy đường dẫn đó bằng cách gọi

Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) 
Các vấn đề liên quan