2009-10-12 174 views
7

我試圖在我的Windows Forms應用程序中創建一個文本文件。它工作正常,但它正在應用程序的默認位置創建文本文件(如在文件夾bin中)。但我想將創建的文本文件保存在我的用戶文件文件夾中。我該怎麼做?在userfiles文件夾(C#,Windows窗體)中創建一個文件

這是我的代碼:

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

回答

16

您可以使用Environment.GetFolderPath才能到用戶數據文件夾的路徑:

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

查找到Environment.SpecialFolder枚舉的文檔,以便找到最適合您需要的文件夾。

+0

我知道了,謝謝Directory.GetCurrentDirectory() – Nagu 2009-10-12 08:11:25

1

只需將路徑添加到文件名,如 FileInfo的fileusername =新的FileInfo(@ 「C:\用戶\ MYUSER \文檔\ userinfo.txt」);

+0

我想在我的應用程序文件夾中創建只(動態) – Nagu 2009-10-12 08:01:49

+1

請保持從我的文檔文件夾作爲應用程序清除。 「我的文檔」就是這樣調用的,因爲*我創建的東西,而不是一些隨機的應用程序。有足夠的程序已經出錯了。 – Joey 2009-10-12 08:06:23

1

String path = Environment.GetFolderPath(Environment.SpecialFolder.Personal);

OR

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

請保持清楚從我的文檔文件夾作爲應用程序。 「我的文檔」就是這樣調用的,因爲*我創建的東西,而不是一些隨機的應用程序。有足夠的程序已經出錯了。 – Joey 2009-10-12 08:04:25

+0

感謝您的快速響應。但是我很抱歉,我沒有正確地解決我的問題。我想在我的應用程序forlder中創建一個文件(如c:\\ myapp \\ usercreatedfiles \)在這裏我想創建 – Nagu 2009-10-12 08:05:41

+0

@Nagu:不這樣做:這將需要用戶具有文件夾的完全權限其中安裝了應用程序,這通常不是一件好事。 – 2009-10-12 08:09:57

2

您可以使用Environment.SpecialFolder創建指向文件路徑到我的文檔:

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

我誤解了這個問題,並且已經修復了它 – Christian 2009-10-12 08:05:55

6

您可以用Environment.SpecialFolder枚舉一起使用Environment.GetFolderPath()功能。

用途:

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

在當前用戶My Documents文件夾中創建的文件名。

1

從它的外觀你只是想創建自定義目錄中的文本文件。我的建議是爲路徑創建一個常量(也許將其保存在app.config文件中)。

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

使用相對路徑,你的EXE所以不論你在何處安裝應用程序的設置將一直保存到「PathToExe /設置/ UserInfo.txt」。

,那麼你會做這樣的事情:

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(); 

但是,您可以使用這種方法遇到一個權限問題,它通常是一個更好的主意來存儲無論是在註冊表或應用程序數據這樣的事情目錄。

+0

哦,非常感謝你 – Nagu 2009-10-12 08:20:57

相關問題