Сохранение файла в каталог Path.Combine - PullRequest
0 голосов
/ 12 мая 2018

Может кто-нибудь посоветовать, как сохранить файл в каталоге 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 ]

0 голосов
/ 13 мая 2018

Хорошее место, ребята,

Большое спасибо за отзыв и быстрый переход. Как вы уже упоминали, я менял действие для wholesalePath до того, как оно было действительно создано.

void Main()
{
    string mainFolder = "StackOverflow";
    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), все работает как шарм. Еще раз большое спасибо за вашу помощь.

Очень ценится.

0 голосов
/ 12 мая 2018

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

void Main()
{
    string mainFolder = "StackOverflow";
    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 в папке рабочего стола с именем StackOverflow\Test.

Это будет работать, но я бырекомендуем создавать отдельные переменные для папки и пути к файлу.Это сделает код более понятным, поскольку каждая переменная будет иметь только одну цель и сделает такие ошибки менее вероятными.Например:

void Main()
{
    string mainFolder = "StackOverflow";
    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);
}
...