2009-10-12 63 views
7

Tôi đang cố gắng tạo tệp văn bản trong ứng dụng Windows Forms của mình. Nó hoạt động tốt, nhưng nó đang tạo tệp văn bản trong vị trí mặc định của ứng dụng (như trong thư mục bin). Nhưng tôi muốn lưu tập tin văn bản đã tạo trong thư mục tập tin người dùng của tôi. Tôi làm nó như thế nào?Tạo một tệp trong thư mục userfiles (C#, Windows Forms)

Đây là mã của tôi:

FileInfo fileusername = new FileInfo("userinfo.txt"); 
StreamWriter namewriter = fileusername.CreateText(); 
namewriter.Write(txtUsername.Text); 
namewriter.Close(); 

Trả lời

16

Bạn có thể sử dụng Environment.GetFolderPath để có được đường dẫn đến thư mục dữ liệu người dùng:

string fileName = Path.Combine(
    Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), 
    "userinfo.txt"); 

Nhìn vào tài liệu của Environment.SpecialFolder enum để tìm thư mục phù hợp nhất với nhu cầu của bạn.

+0

Tôi đã cảm ơn bạn Directory.GetCurrentDirectory() – Nagu

1

Chỉ cần thêm đường dẫn đến tên tập tin, như FileInfo fileusername = new FileInfo (@ "c: \ Users \ myuser \ Documents \ userinfo.txt");

+0

tôi chỉ muốn tạo trong thư mục ứng dụng của mình (dynamicall) – Nagu

+1

Vui lòng giữ rõ ràng khỏi thư mục tài liệu của tôi dưới dạng một ứng dụng. "My Documents" được gọi như thế bởi vì * I * tạo ra những thứ ở đó, không phải một số ứng dụng ngẫu nhiên. Có đủ các chương trình nhận được lỗi này rồi. – Joey

1

Đường dẫn chuỗi = Environment.GetFolderPath (Environment.SpecialFolder.Personal);

HOẶC

String path = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); 
+0

Hãy giữ rõ ràng từ thư mục tài liệu của tôi như là một ứng dụng. "My Documents" được gọi như thế bởi vì * I * tạo ra những thứ ở đó, không phải một số ứng dụng ngẫu nhiên. Có đủ các chương trình nhận được lỗi này rồi. – Joey

+0

cảm ơn bạn đã phản hồi nhanh chóng. Nhưng tôi xin lỗi tôi đã không khung chính xác câu hỏi của tôi ..tôi muốn tạo một tập tin trong ứng dụng của tôi forlder chỉ (như c: \\ myapp \\ usercreatedfiles \) ở đây tôi muốn tạo ra – Nagu

+0

@Nagu: không làm điều đó: điều này sẽ yêu cầu người dùng phải có quyền đầy đủ vào thư mục trong đó ứng dụng được cài đặt, thường không phải là một điều tốt. –

2

Bạn có thể sử dụng để tạo ra một Environment.SpecialFolder filepath trỏ đến tài liệu của tôi:

string filePath = System.IO.Path.Combine(Environment.SpecialFolder.ApplicationData.ToString(), "userinfo.txt"); 
+0

Tôi đã đọc sai câu hỏi và sửa nó thành – Christian

6

Bạn có thể sử dụng chức năng Environment.GetFolderPath() cùng với Environment.SpecialFolder liệt kê.

Sử dụng:

String filePath = Path.Combine(
    Evironment.GetFolderPath(Environment.SpecialFolder.MyDocuments), 
    "userinfo.txt"); 

để tạo ra các tên tập tin trong thư mục người dùng hiện tại My Documents.

1

Từ giao diện của nó, bạn chỉ muốn tạo tệp văn bản trong thư mục tùy chỉnh. Lời khuyên của tôi là tạo một hằng số cho đường dẫn (có thể lưu nó trong tệp app.config).

<appSettings> 
    <add key="UserInfo" value="/Settings/UserInfo.txt" /> 
</appSettings> 

Sử dụng một đường dẫn tương đối để exe của bạn để phân biệt nơi bạn cài đặt ứng dụng của bạn các thiết lập sẽ luôn được lưu vào "PathToExe/Settings/UserInfo.txt".

Sau đó, bạn sẽ làm điều gì đó như:

string UserInfoPath = ConfigurationManager.AppSettings["UserInfo"]; 
if (String.IsNullOrEmpty(UserInfoPath)) 
{ 
    // perhaps use a default value or raise an exception 
} 

FileInfo fileusername = new FileInfo(Path.Combine(Application.StartUpPath, UserInfoPath)); 
StreamWriter namewriter = fileusername.CreateText(); 
namewriter.Write(txtUsername.Text); 
namewriter.Close(); 

Tuy nhiên, bạn có thể đi qua một vấn đề quyền sử dụng phương pháp này, nó thường là một ý tưởng tốt hơn để lưu trữ những thứ như thế này hoặc trong Registry hoặc trong AppData danh mục.

+0

oh cảm ơn bạn rất nhiều – Nagu

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