我正在编写一个小程序,我想获取一个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#编写的
也许任何人都有一个主意。
谢谢。
答案 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(@
),它按字面意义处理转义序列。因此,在这种情况下,您无需在代码行中添加其他反斜杠。