2012-08-16 146 views
2

我正在研究一个简单的程序,其中的一部分从txt文件填充列表。c# - 在哪里放置txt文件

这可能不是一个聪明的问题,但是,我没有找到任何有关这方面的信息。 我想知道在哪里放置文本文件在应用程序目录中的最佳位置。

O知道Resouces但我无法获得存储在那里的文件的路径。

这样两个问题:

  1. 地方是把一个txt文件的最佳地点? (或任何其他重要的文件在应用程序中使用)

  2. 如果我把文件放在Resources如何得到它的路径?

(对不起FO我的英语)

+1

你不需要对你的英语感到抱歉..我看到了很多更糟! – 2012-08-16 23:29:08

+1

我会在评论中说,文本文件的最佳位置是您在具有Windows APP的%APPDATA%(漫游),%LOCALAPPDATA%或%PROGRAMDATA%(在用户之间共享)值内创建的目录,并在%USERPROFILE%内。既然你唯一的要求是因为你无法获得资源,那么这里的答案就是你真正需要的。 – 2012-08-16 23:36:11

+0

是的,不要担心你的英语。我是讲英语的作家,有时候还会写更糟糕的东西。 – 2012-08-16 23:37:01

回答

2

如果这些文件你不需要公开给用户并且只提供一个内部目的,那么你可以将它们作为资源嵌入到你的程序集中,并在需要时将它们提取出来。

为此,请在您的应用程序中创建一个新目录。我们称之为'资源'。然后,添加文本文件。使用每个文本文件的属性窗口将BuildAction设置更改为“Embedded Resource”。然后,在你的代码,一旦你需要的文件的内容,你可以用这样的代码来提取它:

using System.Reflection; 

// ... 

using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("MyApplication.Resources.MyFile.txt")) { 
    using (StreamReader reader = new StreamReader(stream)) { 
     string contents = reader.ReadToEnd(); 
     // Do stuff with the text here 
    } 
} 

如果你不想这样做,正确位置来放置文件是在您在AppData目录下创建的目录。这是一个已知的系统路径,你可以得到这样的:

string folderLocation = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); 
string myPath = Path.Combine(folderLocation, "MyAppName"); 

然后,您可以使用StreamReader或其他类System.IO找到/枚举和读取文件。

1

当应用程序有关联/伴侣的数据文件,它有时是有道理的嵌入它们作为一种资源,因为那时有较少的机会,他们与例如被篡改删除或修改的数据。

其他时候保持文件松散是有意义的....所以你必须决定存储它们的最佳位置....你可以在应用程序的安装位置或者在应用程序数据/ AppData目录。


对于资源嵌入文件看看这个链接:

它有一个一步一步的指导,展示如何嵌入一个文件(例如,将文本文件转换为Resources),然后使用StreamReader来访问它并阅读其内容。


来存储文件,并从一个位置适当目录访问他们,你可以使用:

System.Environment.SpecialFolder.ApplicationData

Environment.GetFolderPath()

找出应用程序数据目录。

然后,当您创建应用程序安装程序/安装程序时,应该让它为AppData下的应用程序创建一个目录,然后您可以决定要将哪些文件安装到该位置。

参见:

注意,的ApplicationData “漫游” ...即。当您登录到不同的机器,这些文件被转移到该计算机作为个人资料的一部分....你可能不希望这样....所以你也可以使用:

System.Environment.SpecialFolder.CommonApplicationData