Сохранение файла в каталог 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) все работает как шарм. Еще раз большое спасибо за вашу помощь.

Очень признателен.

Другие вопросы по тегам