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

7

目前我正在测试一些代码,但是在调用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个回答

16

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

@"C:\test.txt"

或者转义 "\" 字符

"C:\\test.txt"

4

在C#字符串中,反斜杠被认为是一个特殊字符,通常用于转义其他字符。因此,在引号前加上@前缀,可以告诉它将反斜杠视为正常字符:

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

或者,您可以使用双反斜杠进行转义:

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

3

C:\test 中的 \t 可能被视为制表符。


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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接