我需要你的帮助,我找不到任何关于它的解决主题。
我有一个应用程序,我想创建一个 .cvs 文件,该方法采用我声明的路径并重写它,并在我声明的路径前面添加应用程序目录路径,这是编码,然后是错误。
Public fileNameReport As String = ""
fileNameReport = ""
fileNameReport = "C:Usersguillermo.velezDocuments 1.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.velezDocuments 1.Guillermo VTests" & Now.ToString("MMddyyyy HHmmss") & " Reject Report.csv"
我有三个建议:
- 让
Public
变量成为您以后可以与String.Format()
一起使用的"基"。 - 使用格式字符串而不是
String.Replace()
来清理日期 - 摆脱
File.Create()
检查。我过去经常写过这个,但一般来说,这不是你想做的事情。请记住,文件系统是易失性的,这意味着您仍然必须能够处理异常。最好将精力投入到异常处理程序中(这可能是在更高级别的代码...不一定需要在这里尝试/捕获(
把它们放在一起:
Public Const fileNameReportBase As String = "C:Usersguillermo.velezDocuments 1.Guillermo VTests{0:yyyyMMddHHmmss} Reject Report.csv"
Dim fileNameReport As String = String.Format(fileNameReportBase, Now)
File.Create(fileNameReport)