【问题标题】:How to read file path where folder has square brackets in the name如何读取文件夹名称中有方括号的文件路径
【发布时间】:2016-09-05 17:49:04
【问题描述】:

我有一个文件路径如下:

C:\Recordings\Public\20160901\[MYPC]

我无法更改文件夹的格式

我正在尝试使用以下代码读取文件夹的内容:

foreach (string file in Directory.EnumerateFiles(args[0], "*.*"))
{
    string contents = File.ReadAllText(file);
    Console.WriteLine(contents);
}

我收到以下错误:

Unhandled Exception: System.NotSupportedException: The given path's format is not supported.

我知道this post,因为我以前在 powershell 中使用过这种方法并且效果很好,但它似乎不适用于 c#。我正在通过 CMD 行 args[0](控制台应用程序)设置读取路径

欢迎任何想法/指针。

更新

我正在使用以下内容调用我的应用程序,这给了我一个错误:

myapp.exe "c:\My Recordings\Public\20160905\[CDPC]\"

以下没有:

myapp.exe "c:\My Recordings\Public\20160905\[CDPC]"

【问题讨论】:

  • 一个丑陋的解决方法是在坏字符的每个实例前面加上'\\'(这只是一个字符,已转义)
  • 无法复制您的问题:它对我有用您不需要任何特殊技巧,只需在命令行中输入路径作为参数
  • 嗯...不应该是 args[1] 吗? args[0] 通常包含文件可执行文件名
  • @Pikoh 不,它是 args[0] ...再次,我正在测试该代码,它确实在工作
  • @MachineLearning 这可能是因为它被封装在双引号中,因为实际目录名称中有空格,即:myapp.exe "C:\My Recordings\Public\20160901[MYPC]\"是我收到错误的时候

标签: c# filepath brackets square


【解决方案1】:

如果存在引号,只需删除它们

foreach (string file in Directory.EnumerateFiles(args[0].Replace("\"",""), "*.*"))
            {
                string contents = File.ReadAllText(file);
                Console.WriteLine(contents);
            }

也可以(更准确地说)用正则表达式来完成

Regex.Replace(args[0], "(^\")|(\"$)", "") //instead of args[0].Replace("\"","")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-29
    • 2017-12-22
    • 2020-12-19
    • 2011-01-25
    • 1970-01-01
    相关资源
    最近更新 更多