我正在研究一个简单的程序,其中的一部分从txt文件填充列表。c# - 在哪里放置txt文件
这可能不是一个聪明的问题,但是,我没有找到任何有关这方面的信息。 我想知道在哪里放置文本文件在应用程序目录中的最佳位置。
O知道Resouces
但我无法获得存储在那里的文件的路径。
这样两个问题:
地方是把一个txt文件的最佳地点? (或任何其他重要的文件在应用程序中使用)
如果我把文件放在
Resources
如何得到它的路径?
(对不起FO我的英语)
我正在研究一个简单的程序,其中的一部分从txt文件填充列表。c# - 在哪里放置txt文件
这可能不是一个聪明的问题,但是,我没有找到任何有关这方面的信息。 我想知道在哪里放置文本文件在应用程序目录中的最佳位置。
O知道Resouces
但我无法获得存储在那里的文件的路径。
这样两个问题:
地方是把一个txt文件的最佳地点? (或任何其他重要的文件在应用程序中使用)
如果我把文件放在Resources
如何得到它的路径?
(对不起FO我的英语)
如果这些文件你不需要公开给用户并且只提供一个内部目的,那么你可以将它们作为资源嵌入到你的程序集中,并在需要时将它们提取出来。
为此,请在您的应用程序中创建一个新目录。我们称之为'资源'。然后,添加文本文件。使用每个文本文件的属性窗口将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
找到/枚举和读取文件。
当应用程序有关联/伴侣的数据文件,它有时是有道理的嵌入它们作为一种资源,因为那时有较少的机会,他们与例如被篡改删除或修改的数据。
其他时候保持文件松散是有意义的....所以你必须决定存储它们的最佳位置....你可以在应用程序的安装位置或者在应用程序数据/ AppData目录。
对于资源嵌入文件看看这个链接:
它有一个一步一步的指导,展示如何嵌入一个文件(例如,将文本文件转换为Resources),然后使用StreamReader
来访问它并阅读其内容。
来存储文件,并从一个位置适当目录访问他们,你可以使用:
System.Environment.SpecialFolder.ApplicationData
与
Environment.GetFolderPath()
找出应用程序数据目录。
然后,当您创建应用程序安装程序/安装程序时,应该让它为AppData下的应用程序创建一个目录,然后您可以决定要将哪些文件安装到该位置。
参见:
注意,的ApplicationData “漫游” ...即。当您登录到不同的机器,这些文件被转移到该计算机作为个人资料的一部分....你可能不希望这样....所以你也可以使用:
System.Environment.SpecialFolder.CommonApplicationData
你不需要对你的英语感到抱歉..我看到了很多更糟! – 2012-08-16 23:29:08
我会在评论中说,文本文件的最佳位置是您在具有Windows APP的%APPDATA%(漫游),%LOCALAPPDATA%或%PROGRAMDATA%(在用户之间共享)值内创建的目录,并在%USERPROFILE%内。既然你唯一的要求是因为你无法获得资源,那么这里的答案就是你真正需要的。 – 2012-08-16 23:36:11
是的,不要担心你的英语。我是讲英语的作家,有时候还会写更糟糕的东西。 – 2012-08-16 23:37:01