我正在开发一个简单的程序,其中一部分填充了txt文件中的列表。
这可能不是一个聪明的问题但是,我没有找到任何关于此的信息。 我想知道将文本文件放在应用程序目录中的最佳位置。
我知道Resouces
但是,我无法获得我存储在那里的文件的路径。
所以有两个问题:
放置txt文件的最佳位置在哪里? (或在申请中使用的任何其他重要文件)
如果我将文件放入Resources
我如何获取其路径?
(对不起我的英文)
答案 0 :(得分: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 :(得分:1)
当应用程序具有关联/伴随数据文件时,有时将它们作为资源嵌入是有意义的,因为它们被篡改的可能性较小。删除,或修改数据。
其他时候保持文件松散是有道理的....所以你必须决定存储它们的最佳位置....你可以在安装应用程序的地方或应用程序中找到它们Data / AppData目录。
要在参考资料中嵌入文件,请查看以下链接:
它有一个分步指南,展示了如何将文件(例如,文本文件)嵌入到资源中,然后使用StreamReader
访问它并读取其内容。
要存储文件并从适当定位的目录中访问它们,您可以使用:
System.Environment.SpecialFolder.ApplicationData
与
Environment.GetFolderPath()
找出AppData目录的位置。
然后,当您创建应用程序安装程序/安装程序时,您应该在AppData下面为应用程序创建目录,然后您可以决定要将哪些文件安装到该位置。
请参阅:
注意,ApplicationData“漫游”......即。当您登录到另一台计算机时,文件将作为您的个人资料的一部分传输到该计算机上....您可能不需要这样....所以您可以改为使用:
System.Environment.SpecialFolder.CommonApplicationData