【问题标题】:C# - Unhandled Exception - Illegal Characters in PathC# - 未处理的异常 - 路径中的非法字符
【发布时间】:2011-06-17 16:06:32
【问题描述】:

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

我的代码如下:

 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");
        }

    }

【问题讨论】:

    标签: c# .net windows


    【解决方案1】:

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

    @"C:\test.txt"
    

    或转义“\”字符

    "C:\\test.txt"
    

    【讨论】:

      【解决方案2】:

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

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

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

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

      【讨论】:

        【解决方案3】:

        C:\test 中的 \t 可能被视为一个选项卡。

        【讨论】:

          【解决方案4】:

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

          【讨论】:

            猜你喜欢
            • 2022-12-17
            • 2017-10-17
            • 1970-01-01
            • 2014-04-10
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-02-28
            相关资源
            最近更新 更多