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

  • Автор темы Автор темы seoBB
  • Дата начала Дата начала

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#? что вообще можно сделать в такой ситуации?
 
Последнее редактирование:
В этой ситуации возникает ошибка "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
Директория, в которую вы хотите записать файл, не существует. Соответственно, перед записью в файл, нужно проверить этот момент и создать директорию, если её нет.


Большое спасибо! Всё работает! :az:
 
  • Спасибо
Реакции: shtift
Директория, в которую вы хотите записать файл, не существует. Соответственно, перед записью в файл, нужно проверить этот момент и создать директорию, если её нет.


Возникла еще небольшая проблема, гугл уже измучил но все примеры или не работают как надо или я не знаю как искать.
Как сделать так, чтобы он сохранял файлы без 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)" ??
 

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