7

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

    }

4 Answers 4

16

Try to use @ before the string like :

@"C:\test.txt"

or to escpe the "\" caracter

"C:\\test.txt"
Sign up to request clarification or add additional context in comments.

Comments

4

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

Comments

3

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

Comments

2

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

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.