C# - 未处理的异常 - 路径中的非法字符

时间:2011-06-17 16:06:33

标签: c# .net windows

我现在只是在测试一些代码,虽然在调用StartRemoveDuplicate(编译时)时会抛出异常,抱怨非法字符:

error

我的代码如下:

 class Program
    {
        static void Main(string[] args)
        {
            foreach (string exename in System.IO.File.ReadAllLines("test.txt"))
            {
                Process.Start("test.exe", "\"" + exename + "\"").WaitForExit();
            }

            StartRemoveDuplicate();

        }



        private static void RemoveDuplicate(string sourceFilePath, string destinationFilePath)
        {
            var readLines = File.ReadAllLines(sourceFilePath, Encoding.Default);

            File.WriteAllLines(destinationFilePath, readLines.Distinct().ToArray(), Encoding.Default);
        }


        private static void StartRemoveDuplicate()
        {
            RemoveDuplicate("C:\test.txt", "C:\test2.txt");
        }

    }

4 个答案:

答案 0 :(得分:15)

尝试在字符串之前使用@,如:

@"C:\test.txt"

或逃避“\”caracter

"C:\\test.txt"

答案 1 :(得分:4)

反斜杠被认为是C#字符串中的特殊字符,通常用于转义其他字符。所以你可以告诉它通过在引号之前用@加上文字前缀来正常处理反斜杠:

RemoveDuplicate(@"C:\test.txt", @"C:\test2.txt");

或者,您可以使用双反斜杠来逃避它:

RemoveDuplicate("C:\\test.txt", "C:\\test2.txt");

答案 2 :(得分:3)

C:\ test中的\ t可能被视为标签。

答案 3 :(得分:2)

使用Path.Combine组合部分文件路径。它处理“\”字符的细节。