c# - 放置txt文件的位置

时间:2012-08-16 23:22:11

标签: c# .net file

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

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

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

所以有两个问题:

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

  2. 如果我将文件放入Resources我如何获取其路径?

  3. (对不起我的英文)

2 个答案:

答案 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");

然后,您可以使用StreamReaderSystem.IO中的其他类来查找/枚举和阅读文件。

答案 1 :(得分:1)

当应用程序具有关联/伴随数据文件时,有时将它们作为资源嵌入是有意义的,因为它们被篡改的可能性较小。删除,或修改数据。

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


要在参考资料中嵌入文件,请查看以下链接:

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


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

System.Environment.SpecialFolder.ApplicationData

Environment.GetFolderPath()

找出AppData目录的位置。

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

请参阅:

注意,ApplicationData“漫游”......即。当您登录到另一台计算机时,文件将作为您的个人资料的一部分传输到该计算机上....您可能不需要这样....所以您可以改为使用:

System.Environment.SpecialFolder.CommonApplicationData