file.create 用原始应用程序目录覆盖我声明的路径和我声明的路径 vb.net



我需要你的帮助,我找不到任何关于它的解决主题。

我有一个应用程序,我想创建一个 .cvs 文件,该方法采用我声明的路径并重写它,并在我声明的路径前面添加应用程序目录路径,这是编码,然后是错误。

Public fileNameReport As String = ""
fileNameReport = ""
fileNameReport = "C:Usersguillermo.velezDocuments1.Guillermo VTests" & 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\调试\C\用户(我的用户名(\文档\01.Guillermo V\Tests\1132020 110900 AM 拒绝报告.csv'。

你不应该用空字符串替换:

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

这会将路径(如c:(转换为c

请使用日期时间格式选项获取日期作为文件名的一部分,例如

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)

谢谢奥列克萨,我没有看到这个,对不起,我已经更正了我的代码,现在工作正常。

fileNameReport = "C:Usersguillermo.velezDocuments1.Guillermo VTests" & Now.ToString("MMddyyyy HHmmss") & " Reject Report.csv"

我有三个建议:

  1. Public变量成为您以后可以与String.Format()一起使用的"基"。
  2. 使用格式字符串而不是String.Replace()来清理日期
  3. 摆脱File.Create()检查。我过去经常写过这个,但一般来说,这不是你想做的事情。请记住,文件系统是易失性的,这意味着您仍然必须能够处理异常。最好将精力投入到异常处理程序中(这可能是在更高级别的代码...不一定需要在这里尝试/捕获(

把它们放在一起:

Public Const fileNameReportBase As String = "C:Usersguillermo.velezDocuments1.Guillermo VTests{0:yyyyMMddHHmmss} Reject Report.csv"
Dim fileNameReport As String = String.Format(fileNameReportBase, Now)
File.Create(fileNameReport)

最新更新