3

我正在开发一个简单的程序,其中一部分从 txt 文件填充列表。

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

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

所以2个问题:

  1. 放置txt文件的最佳位置在哪里?(或在应用程序中使用的任何其他重要文件)

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

(对不起我的英语)

4

2 回答 2

2

如果这些是您不需要向用户公开并且仅用于内部目的的文件,那么您可以将它们作为资源嵌入到您的程序集中,并在需要时提取它们。

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

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来查找/枚举和读取文件。

于 2012-08-16T23:30:07.960 回答
1

当应用程序具有关联/伴随数据文件时,有时将它们作为资源嵌入是有意义的,因为这样它们被篡改的机会就会减少,例如删除或修改数据。

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


要在资源中嵌入文件,请查看此链接:

它有一个分步指南显示如何嵌入文件(例如,文本文件到资源中),然后使用 aStreamReader访问它并读取其内容。


要存储文件并从适当位置的目录访问它们,您可以使用:

System.Environment.SpecialFolder.ApplicationData

Environment.GetFolderPath()

找出 AppData 目录在哪里。

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

看:

请注意,ApplicationData“漫游”...即当您登录到另一台机器时,文件将作为您的配置文件的一部分传输到该机器上......您可能不想要这个......所以您可以改用:

System.Environment.SpecialFolder.CommonApplicationData
于 2012-08-16T23:26:47.760 回答