Как получить текущую дату и создать каталог Ежедневно в C#? - PullRequest
0 голосов
/ 22 января 2020

получить текущую дату и сделать каталог и секунду при создании каталога, в этом каталоге я должен сохранить файл Excel, а также сохранить файл как текущую дату.

String Todaysdate = DateTime.Now.ToString("dd-MM-yyyy");
if (!Directory.Exists("C:\\Users\\Krupal\\Desktop\\" + Todaysdate))
{
     Directory.CreateDirectory("C:\\Users\\Krupal\\Desktop\\" + Todaysdate);
}

Этот код создал каталог с текущей датой , Но когда я хочу сохранить файл в этом каталоге, он генерирует ошибку:

Не удалось найти часть пути 'D: \ WORK \ RNSB \ RNSB \ bin \ Debug \ 22-01 -2020 \ 22-01-2020.XLS Путь Belove - это файл Excel, который мне нужно сохранить.

using (System.IO.StreamWriter file = new System.IO.StreamWriter(Todaysdate+"\\"+DateTime.Now.ToString("dd/MM/yyyy") +".XLS"))

Ответы [ 3 ]

1 голос
/ 23 января 2020

На самом деле вы создаете каталог по пути, а затем сохраняете .xls по другому пути.

Вы создаете каталог по этому пути:

"C:\\Users\\Krupal\\Desktop\\" + Todaysdate

Затем, здесь путь, по которому вы пытаетесь сохранить .xls:

Todaysdate+"\\"+DateTime.Now.ToString("dd/MM/yyyy") +".XLS"

Ошибка ясно показывает проблему, не удалось найти этот путь:

D: \ WORK \ RNSB \ RNSB \ bin \ Debug \ 22-01-2020 \ 22-01-2020.XLS

При создании .xls вы пропускаете путь root, поэтому процесс ищет путь 22-01-2020\22-01-2020.XLS в его рабочем каталоге D:\WORK\RNSB\RNSB\bin\Debug.

Вам просто нужно выровнять эти пути: я предлагаю вам использовать относительные пути, поэтому вот как вы должны исправить свой код:

String Todaysdate = DateTime.Now.ToString("dd-MM-yyyy");
if (!Directory.Exists(Todaysdate))
{
     Directory.CreateDirectory(Todaysdate);
}

//then

using (System.IO.StreamWriter file = new System.IO.StreamWriter(Todaysdate+"\\"+DateTime.Now.ToString("dd/MM/yyyy") +".XLS"))
1 голос
/ 23 января 2020

Я предполагаю, что вы запускаете ваше приложение WinForms в режиме отладки. Это означает, что ваш текущий путь - [путь вашего приложения] \ bin \ Debug. Если вы загляните в проводник, то увидите, что там был создан исполняемый файл. При использовании StreamWriter без абсолютного имени файла файл, который он пытается создать, относится к текущему пути выполнения (в вашем случае 'D: \ WORK \ RNSB \ RNSB \ bin \ Debug'). StreamWriter создаст новый файл, если он не существует, но не создаст новую папку, и вы передаете ему Todaysdate + "\\", который фактически является новой папкой. Следовательно, вы получаете сообщение об ошибке.

Чтобы решить вашу проблему, вам необходимо указать абсолютный путь к вашему вновь созданному каталогу:

using (System.IO.StreamWriter file = new System.IO.StreamWriter("C:\\Users\\Krupal\\Desktop\\" + Todaysdate+"\\"+DateTime.Now.ToString("dd/MM/yyyy") +".XLS"))
0 голосов
/ 23 января 2020

Winforms всегда ожидают каталоги внутри папки отладки, так как ее EXE-файл находится внутри отладки, и попробуйте найти его в папке отладки.
В ошибке он ясно показывает, что он ищет внутри папки "Debug". Можете ли вы проверить, существует ли файл в указанной папке, созданной вами на C Диск.

// Для записи файла System.IO.File.WriteAllLines (@ "C: \ Users \ Public \ TestFolder \ WriteLines.txt ", линии); Вы можете подписаться на эту публикацию MSDN, надеюсь, она поможет, если да, пожалуйста, добавьте ее

https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/file-system/how-to-write-to-a-text-file

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...