Michael
Michael

Reputation: 101

C# - Unhandled Exception - Illegal Characters in Path

I am just testing some code at the moment, although when calling the StartRemoveDuplicate (when its compiled) an Exception is thrown, complaining about illegal characters:

error

My code is as follows:

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

    }

Upvotes: 7

Views: 33183

Answers (4)

kareem
kareem

Reputation: 773

Use Path.Combine to combine parts of file paths. It handles the details of "\" characters.

Upvotes: 2

MGZero
MGZero

Reputation: 5963

the \t in C:\test is probably being seen as a tab.

Upvotes: 3

Jerad Rose
Jerad Rose

Reputation: 15513

Backslash is considered a special character in C# strings, usually used to escape other characters. So you can tell it to treat backslashes as normal by prefixing your literals with @ before the quotes:

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

Or, you can escape it with double backslashes:

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

Upvotes: 4

Tomasz Jaskuλa
Tomasz Jaskuλa

Reputation: 16013

Try to use @ before the string like :

@"C:\test.txt"

or to escpe the "\" caracter

"C:\\test.txt"

Upvotes: 16

Related Questions