file.create перезаписывает мой объявленный путь с исходным каталогом приложения и мой заявленный путь vb.net - PullRequest
0 голосов
/ 13 января 2020

Мне нужна ваша помощь, я не могу найти решение топи c об этом.

У меня есть приложение, и я хочу создать файл .cvs, метод берет мой объявленный путь и повторно записывает его и добавляет путь к каталогу приложения перед моим объявленным путем, вот кодирование, а затем ошибка.

    Public fileNameReport As String = ""

    fileNameReport = ""
    fileNameReport = "C:\Users\guillermo.velez\Documents\01.Guillermo V\Tests\" & Now & " Reject Report.csv"
    fileNameReport = fileNameReport.Replace("/", "")
    fileNameReport = fileNameReport.Replace(":", "")

    If Not File.Exists(fileNameReport) Then
        System.IO.File.Create(fileNameReport).Dispose()
    End If

Ошибка выглядит следующим образом: System.IO.DirectoryNotFoundException: 'Не удалось найти часть пути 'C: \ 224135-6 Отклонить управление \ 224135-6 Отклонить управление \ bin \ Debug \ C \ Users (мое имя пользователя) \ Documents \ 01.Guillermo V \ Tests \ 1132020 110900 AM Отклонить отчет. CSV ''

Ответы [ 3 ]

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

вы не должны заменять : на пустую строку

fileNameReport = fileNameReport.Replace(":", "")

Это преобразует путь как c:\ в c\

Пожалуйста, используйте параметры форматирования DateTime, чтобы получить дату как часть имени файла как

fileNameReport = string.Format("{0:ddMMyyyyhhmmss}Reject Report.csv", DateTime.Now)
dirName = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) // this will return folder where executing assembly is located but you can put any value here
fileNameReport = Path.Combine(dirName, fileNameReport)

0 голосов
/ 13 января 2020

У меня есть три предложения:

  1. Пусть переменная Public будет "базовой", которую вы можете использовать позже с String.Format().
  2. Используйте строку формата вместо String.Replace() чтобы очистить дату
  3. Избавьтесь от проверки File.Create(). Я часто писал об этом в прошлом, но, вообще говоря, это не то, что вы хотите сделать. Помните, что файловая система является нестабильной, то есть вы все еще должны иметь возможность обрабатывать исключения. Лучше приложить усилия к обработчику исключений (который может быть на более высоком уровне кода ... здесь не обязательно обязательно пытаться / поймать)

Соберите все вместе:

Public Const fileNameReportBase As String = "C:\Users\guillermo.velez\Documents\01.Guillermo V\Tests\{0:yyyyMMddHHmmss} Reject Report.csv"

Dim fileNameReport As String = String.Format(fileNameReportBase, Now)
File.Create(fileNameReport)
0 голосов
/ 13 января 2020

Спасибо, oleksa Я этого не видел, извините, я исправил свой код и теперь отлично работает.

 fileNameReport = "C:\Users\guillermo.velez\Documents\01.Guillermo V\Tests\" & Now.ToString("MMddyyyy HHmmss") & " Reject Report.csv"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...