none
c# 在遍历文件的过程中若遇到非法路径,要如何忽略掉非法路径,继续下个循环?

    问题

  • 遍历地址的过程中报非法路径异常,"e:\\adt-bundle-windows-x86-20130219\\sdk\\platforms\\android-8\\data\\res",我觉得这个路径字符串没有问题啊, 我还查看了下res,res下还有目录.另外读取的盘符为e:\是u盘

    res下的文件有些文件夹名称很奇怪,是这些导致的么?如果一个目录中的文件或文件夹有非法路径的话,怎样在遍历的过程中不浏览这些文件了?用tra catch?







    2016年10月29日 12:58

答案

  • 1  用这个方法获取Windows路径中的非法字符

    System.IO.Path.GetInvalidPathChars()

    2 判断路径中是否包含非法字符,可用以下方法

    string path=路径字符串;

    int ndx = path.IndexOfAny(System.IO.Path.GetInvalidPathChars());

    ndx>=0表示有非法字符。

    3 如果想去掉路径中的非法字符,可参考下面的方法

    string illegal = "\"M\"\\a/ry/ h**ad:>> a\\/:*?\"| li*tt|le|| la\"mb.?";
    string invalid = new string(Path.GetInvalidFileNameChars()) + new string(Path.GetInvalidPathChars());

    foreach (char c in invalid)
    {
        illegal
    = illegal.Replace(c.ToString(), "");
    }


    专注于.NET ERP/CRM开发框架,C/S架构,SQL Server + ORM(LLBL Gen Pro) + Infragistics WinForms

    2016年10月29日 13:32