2009-10-12 256 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

相关问题