Сохранение файла в каталог Path.Combine
Может кто-нибудь посоветовать, как сохранить файл в Path.Combine
каталог? Пожалуйста, найдите часть моего кода ниже.
Создание каталога:
string wholesalePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), mainFolder, wholesaleFolder);
Directory.CreateDirectory(wholesalePath);
Я также указал имя файла, который следует использовать.
string fileName = "xmltest.xml";
Затем я заново создал "wholesalePath", чтобы включить имя файла:
wholesalePath = Path.Combine(wholesalePath, fileName);
Несколько простых строк кода, который выполняется:
XmlDocument doc = new XmlDocument();
string oneLine = "some text";
doc.Load(new StringReader(oneLine));
doc.Save(fileName);
Console.WriteLine(doc);
У меня проблема в том, что когда я использую doc.Save(fileName)
тогда я получаю файл в каталогах проекта VisualStudio, который является неправильным каталогом.
Однако, когда я использую doc.Save(wholesalePath)
затем файл, который должен быть создан "xmltest.xml", фактически создается как другой каталог в "wholesalePath".
Буду благодарен за любые предложения.
2 ответа
Как сказано в комментариях, вам нужно использовать wholesalePath
создать каталог перед добавлением fileName
, Вам нужно использовать wholesalePath
после добавления fileName
сохранить файл. Я проверил следующий код, и он работает как ожидалось:
void Main()
{
string mainFolder = "Stackru";
string wholesaleFolder = "Test";
string wholesalePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), mainFolder, wholesaleFolder);
Directory.CreateDirectory(wholesalePath);
string fileName = "xmltest.xml";
wholesalePath = Path.Combine(wholesalePath, fileName);
XmlDocument doc = new XmlDocument();
string oneLine = "<root></root>";
doc.Load(new StringReader(oneLine));
doc.Save(wholesalePath);
}
Создает файл с именем xmltest.xml
в папке рабочего стола с именем Stackru\Test
,
Это будет работать, но я бы порекомендовал создать отдельные переменные для папки и пути к файлу. Это сделает код более понятным, поскольку каждая переменная будет иметь только одну цель и сделает такие ошибки менее вероятными. Например:
void Main()
{
string mainFolder = "Stackru";
string wholesaleFolder = "Test";
string fileName = "xmltest.xml";
string destinationFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), mainFolder, wholesaleFolder);
string destinationFilePath = Path.Combine(destinationFolder, fileName);
Directory.CreateDirectory(destinationFolder);
XmlDocument doc = new XmlDocument();
string oneLine = "<root></root>";
doc.Load(new StringReader(oneLine));
doc.Save(destinationFilePath);
}
Хорошее место, ребята,
Большое спасибо за ваш отзыв и быстрый переход. Как вы уже упоминали, я менял действие для wholesalePath
раньше, если был действительно создан.
void Main()
{
string mainFolder = "Stackru";
string wholesaleFolder = "Test";
string wholesalePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), mainFolder, wholesaleFolder);
wholesalePath = Path.Combine(wholesalePath, fileName);
Directory.CreateDirectory(wholesalePath);
string fileName = "xmltest.xml";
XmlDocument doc = new XmlDocument();
string oneLine = "<root></root>";
doc.Load(new StringReader(oneLine));
doc.Save(wholesalePath);
}
Теперь, когда я изменил последовательность выполнения на Directory.CreateDirectory(wholesalePath)
как сначала, а затем wholesalePath = Path.Combine(wholesalePath, fileName)
все работает как шарм. Еще раз большое спасибо за вашу помощь.
Очень признателен.