【问题标题】:Directory.GetFiles() does not look at parent folderDirectory.GetFiles() 不查看父文件夹
【发布时间】:2018-04-18 16:11:22
【问题描述】:

过去这很好用,但现在不行了。我使用下面的代码行从该位置检索文件:

C:\Users\ZAT\source\repos\KPItoolConsole\KPItoolConsole\input\patterns

string[] files = Directory.GetFiles(@"input\patterns", "*.json", SearchOption.AllDirectories);

但现在调试时出现以下错误:

找不到路径“C:\Users\ZAT\source\repos\KPItoolConsole\KPItoolConsole\bin\Debug\netcoreapp2.0\input\patterns”的一部分

谁能告诉我如何让它再次查看父文件夹?

这适用于控制台 .NET Core 应用程序。我认为它在 Visual Studio 更新后停止工作。

【问题讨论】:

  • 查看当前工作目录。打印System.IO.Directory.GetCurrentDirectory()的结果。
  • 您可能希望在构建期间将 input\patterns 文件夹复制到项目输出中。
  • @john 感谢您的回复。结果是:C:\Users\ZAT\source\repos\KPItoolConsole\KPItoolConsole\bin\Debug\netcoreapp2.0 有没有办法改变工作目录?
  • 程序的工作目录和项目文件夹之间没有没有关系。事实上,即使您的工作目录和 .exe 文件的位置也不能假定是相同的。将你需要的文件放在你的exe文件所在的子文件夹中,并弄清楚如何访问那个exe文件的位置,而不是使用工作目录。
  • 您可以将项目文件夹中的文件标记为在构建过程中复制到输出文件夹。只需在项目资源管理器中选择文件并检查属性;它被称为“复制到输出目录”,如果我没记错的话,它会保留目录结构。如前所述,除非作为命令行参数给出,否则您应该真正使用程序的位置作为基础来访问本地文件; “当前工作目录”完全不可靠。

标签: c# .net console-application


【解决方案1】:

你可以通过这种方式解决。下面的这些代码是我这边测试的。

string src_path = @"C:\Users\ZAT\source\repos\KPItoolConsole\KPItoolConsole\input\patterns";
string dest_path = @"C:\Users\NBY81HC\Desktop\hello";
foreach (string file_path in Directory.GetFiles(src_path,"*.json", SearchOption.AllDirectories))
{
   string fileName = Path.GetFileName(file_path);
   File.Copy(file_path, Path.Combine(dest_path, fileName), true);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-28
    • 2014-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-27
    • 2022-01-03
    • 1970-01-01
    相关资源
    最近更新 更多