我现在只是在测试一些代码,虽然在调用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");
}
}
答案 0 :(得分:15)
尝试在字符串之前使用@,如:
@"C:\test.txt"
或逃避“\”caracter
"C:\\test.txt"
答案 1 :(得分:4)
反斜杠被认为是C#字符串中的特殊字符,通常用于转义其他字符。所以你可以告诉它通过在引号之前用@
加上文字前缀来正常处理反斜杠:
RemoveDuplicate(@"C:\test.txt", @"C:\test2.txt");
或者,您可以使用双反斜杠来逃避它:
RemoveDuplicate("C:\\test.txt", "C:\\test2.txt");
答案 2 :(得分:3)
C:\ test中的\ t可能被视为标签。
答案 3 :(得分:2)
使用Path.Combine组合部分文件路径。它处理“\”字符的细节。