2013-06-03 2 views
12

У меня есть путь, и я хочу добавить к нему новую подпапку с именем test. Пожалуйста, помогите мне узнать, как это сделать. Мой код:Добавить обратную косую черту в строку

string path = Environment.GetFolderPath(Environment.SpecialFolder.MyPictures); 
Console.WriteLine(path+"\test"); 

В результате я получаю: "C: \ Users \ My Name \ Pictures ЭСТ"

Пожалуйста, помогите мне найти правильный путь.

+0

\ т вкладка либо использовать \\ т или использовать путь + @ "\" тест – trinalbadger587

ответ

29

Не пытайтесь создавать дорожки, конкатенирующие строки. Используйте метод Path.Combine

string path = Environment.GetFolderPath(Environment.SpecialFolder.MyPictures); 
Console.WriteLine(Path.Combine(path, "test")); 

Path class содержит много полезных статических методов для обработки строк, которые содержат дорожки, имена файлов и расширения. Этот класс очень полезен, чтобы избежать многих распространенных ошибок, а также позволяет кодировать лучшую переносимость между операционными системами («\» на win, «/» в Linux)

Класс Path определен в пространстве имен System.IO.
Вам необходимо добавить using System.IO; в ваш код

+0

Согласованное - используйте структуру, вот почему она есть. –

18

Вам необходимо сбежать. \t - это escape-последовательность для вкладок 0x09.

path + "\\test"

или использование:

path + @"\test"

еще лучше, пусть Path.Combine делать грязную работу за вас:

Path.Combine(path, "test");

Path находится в System.IO пространстве имен.

7

Есть два варианта:

  1. Используйте символ @, например: путь + @ "\ тест"
  2. использовать двойной обратной косой, например: путь + "\\ тест"
3

Обратная косая черта '\' является символом escape для строк в C#. Вы можете:

  • использование Path.Combine

    Path.Combine(path, "test"); 
    
  • избежать экранирующего символа.

    Console.WriteLine(path+"\\test"); 
    
  • использовать стенографическую строку.

    Console.WriteLine(path + @"\test"); 
    
0

обратный слеш является маскирующим, поэтому используйте
Console.WriteLine(path+"\\test");
или
Console.WriteLine([email protected]"\test");