C#: как записать путь из переменных с папками внутри?

seoBB

Client
Регистрация
07.09.2010
Сообщения
130
Благодарностей
20
Баллы
18
Вот такой код:

Код:
string pathToFile = @"C:\Soft\Zenno Working\web\" + project.Variables["domain"].Value + project.Variables["path"].Value + "file.txt";
string contents = project.Variables["temp"].Value;
File.WriteAllText(pathToFile, contents, Encoding.UTF8);
В переменной domain лежит "site.ru".
В переменной path лежит "/folder1/folder2/folder3/... etc." (переменное кол-во вложенных папок).

В этой ситуации возникает ошибка "CSharp OwnCode Could not find a part of the path" (как только в переменной появляется слеш).
При этом кубик "Записать в файл" прекрасно работает с такими переменными.
Однако, кубик не подходит т.к. содержимое переменной temp надо в обязательном порядке кодировать в UTF8.

Как заставить это все работать в C#? что вообще можно сделать в такой ситуации?
 
Последнее редактирование:

shtift

Client
Регистрация
29.07.2015
Сообщения
148
Благодарностей
290
Баллы
63
В этой ситуации возникает ошибка "CSharp OwnCode Could not find a part of the path" (как только в переменной появляется слеш).
Директория, в которую вы хотите записать файл, не существует. Соответственно, перед записью в файл, нужно проверить этот момент и создать директорию, если её нет.

C#:
string pathToFile = @"C:\Soft\Zenno Working\web\" + project.Variables["domain"].Value + project.Variables["path"].Value + "file.txt";
string contents = project.Variables["temp"].Value;

string dirPath = Path.GetDirectoryName(pathToFile);
if(!Directory.Exists(dirPath))
{
    Directory.CreateDirectory(dirPath);
}

File.WriteAllText(pathToFile, contents, Encoding.UTF8);
 
Последнее редактирование:
  • Спасибо
Реакции: seoBB

seoBB

Client
Регистрация
07.09.2010
Сообщения
130
Благодарностей
20
Баллы
18
Директория, в которую вы хотите записать файл, не существует. Соответственно, перед записью в файл, нужно проверить этот момент и создать директорию, если её нет.

Большое спасибо! Всё работает! :az:
 
  • Спасибо
Реакции: shtift

seoBB

Client
Регистрация
07.09.2010
Сообщения
130
Благодарностей
20
Баллы
18
Директория, в которую вы хотите записать файл, не существует. Соответственно, перед записью в файл, нужно проверить этот момент и создать директорию, если её нет.

Возникла еще небольшая проблема, гугл уже измучил но все примеры или не работают как надо или я не знаю как искать.
Как сделать так, чтобы он сохранял файлы без BOM? по умолчанию все сохраняется с BOM.
Я пробовал вот такие варианты но они не работают:

Код:
Encoding utf8_no_Bom = new UTF8Encoding(false);
File.WriteAllText(pathToFile, contents, utf8_no_Bom);
Код:
System.Text.Encoding utf8_no_Bom = new System.Text.UTF8Encoding(false);
File.WriteAllText(pathToFile, contents, utf8_no_Bom);
Код:
var utf8WithoutBOM = new System.Text.UTF8Encoding(false);
File.WriteAllText(pathToFile, contents, utf8WithoutBOM);
p.s. как тут сделать вставку "Код (csharp)" ??
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)