Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#-放置txt文件的位置_C#_.net_File - Fatal编程技术网

c#-放置txt文件的位置

c#-放置txt文件的位置,c#,.net,file,C#,.net,File,我正在编写一个简单的程序,其中一部分是从txt文件填充列表 这可能不是一个聪明的问题,但我没有找到任何关于这方面的信息。 我想知道在应用程序目录中放置文本文件的最佳位置是哪里 O了解资源,但我无法获取存储在那里的文件的路径 因此,有两个问题: 放置txt文件的最佳位置是哪里?(或在申请中使用的任何其他重要文件) 如果我将文件放在资源中如何获取其路径 (对不起,我的英文版)当一个应用程序有相关的/伴随的数据文件时,有时将它们作为资源嵌入是有意义的,因为这样它们被篡改(例如删除或修改数据)的机会就少

我正在编写一个简单的程序,其中一部分是从txt文件填充列表

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

O了解
资源
,但我无法获取存储在那里的文件的路径

因此,有两个问题:

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

  • 如果我将文件放在
    资源中
    如何获取其路径


  • (对不起,我的英文版)

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

    在其他情况下,保持文件松散是有意义的……因此您必须确定存储它们的最佳位置……您可以在安装应用程序的位置或应用程序数据/AppData目录中找到这些文件


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

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


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

    System.Environment.SpecialFolder.ApplicationData

    Environment.GetFolderPath()

    查找AppData目录的位置

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

    见:

    注意,ApplicationData“漫游”…即。当您登录到另一台计算机时,文件将作为您的配置文件的一部分传输到该计算机上……您可能不希望这样做……因此您可以使用:

    System.Environment.SpecialFolder.CommonApplicationData
    

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

    为此,请在应用程序中创建一个新目录。让我们称之为“资源”。然后,向其中添加文本文件。使用每个文本文件的属性窗口将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
    中的其他类查找/枚举并读取文件。

    您不必为自己的英语感到抱歉。。我见过更糟的!我会在评论中说,文本文件的最佳位置是您在Windows上创建的目录,其值为%APPDATA%(漫游)、%LOCALAPPDATA%或%PROGRAMDATA%(在用户之间共享),并且位于%USERPROFILE%内。既然你问这个问题的唯一原因是因为你无法让资源发挥作用,那么这里的答案就是你真正需要的。是的,不要担心你的英语。我是一个说英语的作家,但有时还是会用英语写更糟糕的东西。