代码之家  ›  专栏  ›  技术社区  ›  Thundercleez

带有“|”的FileInfo路径在路径异常中提供非法字符?

  •  -2
  • Thundercleez  · 技术社区  · 6 年前

    当我尝试使用包含“|”字符的字符串构造FileInfo对象时,我在路径异常中得到了非法字符。该字符串只是从我无法控制的数据源解析出来的,因此我无法向原始字符串添加任何转义字符。所以我在字符串上尝试了一个.Replace(“|“,“\\\”),但仍然得到相同的异常。什么才是逃避这一切的正确方法,这样我就不会有例外?

    2 回复  |  直到 6 年前
        1
  •  3
  •   dariom    6 年前

    听起来您的数据源没有为您正在使用的操作系统提供有效的文件路径/名称。

    你可以用 Path.GetInvalidFileNameChars() Path.GetInvalidPathChars()

        2
  •  0
  •   Rufus L    6 年前

    下面是一个示例方法,该方法将从字符串的路径部分删除无效的路径字符,并从输入字符串的文件名部分删除无效的文件字符:

    public static string RemoveIllegalChars(string path)
    {
        if (string.IsNullOrWhiteSpace(path)) return path;
    
        // Remove invalid directory characters
        Path.GetInvalidPathChars().ToList()
            .ForEach(c => path = path.Replace(c.ToString(), ""));
    
        // Remove invalid file name characters from file name portion and return the result
        return Path.Combine(Path.GetDirectoryName(path),
            Path.GetInvalidFileNameChars()
                .Aggregate(Path.GetFileName(path), (fileName, invalidChar) =>
                    fileName.Replace(invalidChar.ToString(), "")));
    }