当我找到路径时,为什么还有第二个“ \”

时间:2019-11-26 11:41:46

标签: c#

我正在编写一个小程序,我想获取一个txt文件的路径。 我知道了路径,但是字符串变量的输出中总是有第二个“ \”。

例如:

string path = @"C:\Test\Test\Test\"; 

预期输出:'C:\ Test \ Test \ Test \'

调试期间的输出:'C:\\ Test \\ Test \\ Test \\'

使用时也是如此:

public static readonly string AppRoot = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);

在调试期间运行我的应用程序时,无法打开txt文件,因为它进入了IF部分。

代码:

public static readonly string AppRoot = Path . GetDirectoryName (Assembly.GetEntryAssembly().Location);

        FileStream fs;
        StreamReader sr;

        string dateiname = "anleitung.txt";
        string ausgabe;
        string path = Path.Combine(AppRoot, dateiname);

        if (!File.Exists(path))
            {
                MessageBox.Show("Die Datei '" + dateiname + "' existiert nicht!", "Fehler", MessageBoxButtons.OK,MessageBoxIcon.Error);
                return;
            }

        fs = new FileStream(dateiname, FileMode.Open);
        sr = new StreamReader(fs);

        ausgabe = "";
        while (sr.Peek() != -1)
            ausgabe += sr.ReadLine() + "\n";
        sr.Close();

txt文件存储在项目文件夹中。

WinForms APP是使用.Net Framework 4.8 C#编写的

也许任何人都有一个主意。

谢谢。

2 个答案:

答案 0 :(得分:4)

IDE将通过显示双反斜杠向您显示它已转义了反斜杠。但是,字符串本身实际上并不包含双反斜杠。

还有有关如何在C#here.

中定义转义的更多信息。

如果要使用其他保留字符,则应该在IDE中看到转义符,就像在双反斜杠中看到的一样,但是在字符串的实际输出中却没有。

例如:(反斜杠)在IDE中-C:\\ myfolder \\ myfile.txt-实际字符串输出-C:\ myfolder \ myfile.txt

例如:(单引号)在IDE中-“ \'varValueWithSingleQuotes \'”-实际的字符串输出-'varValueWithSingleQuotes'

答案 1 :(得分:2)

字符串中的反斜杠是转义符,因此您可以包含\n(换行符)或\t(制表符)之类的内容。如果要在字符串中包含实际的反斜杠,则需要使用另一个反斜杠将其转义,即\\

因此,您将字符串写为:

string path = "C:\\Test\\Test\\Test\\";

但是在您的情况下,您使用的是verbatim string literal@),它按字面意义处理转义序列。因此,在这种情况下,您无需在代码行中添加其他反斜杠。