Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.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# windows窗体c中的文件夹#_C#_Winforms - Fatal编程技术网

C# windows窗体c中的文件夹#

C# windows窗体c中的文件夹#,c#,winforms,C#,Winforms,这是我的第一个windows窗体应用程序 我需要使用我在项目中创建的文件夹,并且需要访问放置.txt文件的数据文件夹 我尝试: string fileName = @"Data\TextFile1.txt"; string path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, fileName); 但我一直收到这个错误: 不可能找到路径的一部分 如何将文件夹的路径与文件名结合起来,以便在发布项目时一切正常 这是我在asp.net应

这是我的第一个windows窗体应用程序

我需要使用我在项目中创建的文件夹,并且需要访问放置.txt文件的数据文件夹

我尝试:

string fileName = @"Data\TextFile1.txt";
string path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, fileName);
但我一直收到这个错误:

不可能找到路径的一部分

如何将文件夹的路径与文件名结合起来,以便在发布项目时一切正常

这是我在asp.net应用程序中执行的操作:

Path.Combine(HttpRuntime.AppDomainAppPath, "Folder/FileName.txt");
在C#.NET中,处理表单时可以轻松使用这些属性

如果需要,例如Appdata路径,请执行以下操作:

string MyPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\" + MyFileName;
但请确保文件/路径存在! 为此,您可以使用.Exists-函数:

if(File.Exists(MyPath))
{
//Do Something
}
(对于-Class,您需要System.IO命名空间!)

编辑:

例如:

  string MyPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\MyConfig.txt";

if(File.Exists(MyPath))
{
 MessageBox.Show($"{MyPath} exists!");
}

希望有帮助;)

如果我理解正确,您正在尝试读取您在Visual Studio中添加到解决方案中的某些文件。 首先,要“部署”这些文件,请在解决方案资源管理器中单击它们,转到属性工具并查看“复制到输出目录”。默认值为“不复制”。将该设置更改为“始终复制”或“更新时复制”。现在,当您构建解决方案时,您的文件将被复制到输出目录。 然后,要在运行时获取当前程序集路径,请查看:


从程序集路径,可以获得包含文件夹的路径,然后可以使用path.Combine()获得所需的文件路径。

如果可能,我不会在应用程序内创建任何路径。NET框架为此类问题提供了应用程序配置文件。您只需将此部分添加到配置文件(开发时为app.config,编译后为application.exe.config)


这很容易自动或手动修改,以适应目标计算机上的任何环境

您的数据文件需要与应用程序
.exe
文件一起位于输出文件夹中。为此:

  • 打开
    Data
    文件夹中每个文件的属性
  • 复制到输出目录
  • 然后构建应用程序
  • 这将复制
    数据
    文件夹以及
    Bin\Debug
    文件夹中的所有文件,并使用现有代码


    使用调试器查看path变量的值。它不是您所期望的。当您尝试访问该文件时是否创建了目录?BaseDirectory返回:C:\Users\myname\Documents\Visual Studio 2015\Projects\projectName\projectName\bin\Debugg要正常工作,我需要C:\Users\myname\Documents\Visual Studio 2015\Projects\projectName\Data\textfile,但我如何才能拥有它?存储您的datafolder在AppSettings键下的app.config文件中的位置,并在运行时使用ConfigurationManager.AppSettings类读取该位置
    Path.Combine
    方法更好,主要是为了可移植性。为什么要在有
    Combine
    的情况下手动连接路径?也许,但是如果他只是需要windows支持,这是最简单的方法。Path.Combine始终是更安全的方法。这个问题不是环境的使用,而是你没有使用Path.Combine.My的问题很简单。。。我有几个类的方法可以使用(FileStream stream=newfilestream(path,FileMode.Append,FileAccess.Write)){来读取strem,{所有这些都可以很好地工作,但路径都是字符串path=@“C:\Users\me\Documents\visualstudio 2015\Projects\nameProj\nameProj\Data\fileName.bin”;在一个网站中,我简单地执行path.Combine(HttpRuntime.AppDomainAppPath,“Folder/FileName.txt”);我必须做什么?@MeJonata,你就快到了。看看我上面发布的答案,它们解释了如何正确获取当前的执行路径。然后你可以在System.IO命名空间中使用一些实用程序类,如FileInfo、DirectoryInfo、path和File,你可以在需要的地方轻松地读写。
    string path = (new System.Uri(Assembly.GetExecutingAssembly().CodeBase)).AbsolutePath;
    
    <configuration>
      <appSettings>
        <add key="mydatafolder" value="e:\whateverpathyoulike"></add>
      </appSettings>
    </configuration>
    
    string path = ConfigurationManager.AppSettings["mydatafolder"];
    path = Path.Combine(path, fileName);