C # - необработанное исключение - недопустимые символы в пути - PullRequest
7 голосов
/ 17 июня 2011

В данный момент я просто тестирую некоторый код, хотя при вызове 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 ]

15 голосов
/ 17 июня 2011

Попробуйте использовать @ перед строкой, например:

@"C:\test.txt"

или экранировать символ "\"

"C:\\test.txt"
4 голосов
/ 17 июня 2011

Обратная косая черта считается специальным символом в строках C #, обычно используется для экранирования других символов. Таким образом, вы можете сказать, что обратные слэши должны обрабатываться как обычно, добавляя префикс к вашим литералам @ перед кавычками:

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

Или вы можете избежать двойного слэша:

RemoveDuplicate("C:\\test.txt", "C:\\test2.txt");
3 голосов
/ 17 июня 2011

\ t в C: \ test, вероятно, рассматривается как вкладка.

2 голосов
/ 17 июня 2011

Используйте Path.Combine для объединения частей путей к файлам. Он обрабатывает детали символов "\".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...