我正在尝试检查文件是否存在于保存应用程序的目录中,如果存在,请在-1末尾添加一个数字-2。 -3-基于同名文件是否已存在。我的代码如下:
Dim FileName, FilePath As String
Dim FileNumber As Integer
FileName = ProjectName
FilePath = Path.Combine(CurrentDirectory, FileName)
If File.Exists(FilePath) = True Then
Do While File.Exists(FilePath)
FileNumber = FileNumber + 1
FileName = FileName & "-" & FileNumber
FilePath = Path.Combine(CurrentDirectory, FileName)
Loop
End If
NewWorkbook.SaveAs(FilePath)
当我运行此代码并且第一次保存文件时,它可以按预期工作,但是如果我尝试第二次保存相同名称的文件,则不会添加迭代的FileNumber,因此文件名保持不变相同,如果不替换原始文件就无法保存。
为什么File.Exists无法识别此文件已存在,我该如何解决?
答案 0 :(得分:0)
您的代码中存在逻辑问题。您将继续修改相同的变量并不断构建新名称。
例如。假设最初有一个名为“ Project.vb”的文件。在循环内的第一次迭代中,您将检查一个名为“ Project.vb1”的文件,如果循环在第二次迭代中继续,则将检查一个名为“ Project.vb12”的文件,依此类推。
更正确的方法可能是
Dim FileName, FileWithoutExtension, FileExtension, FilePath As String
Dim FileNumber As Integer = 1
Dim currentDirectory As String = "E:\temp" ' as an example
FileName = "test.txt" ' as an example
FileExtension = Path.GetExtension(FileName)
FileWithoutExtension = Path.GetFileNameWithoutExtension(FileName)
FilePath = Path.Combine(CurrentDirectory, FileName)
' No need of additional if to test file existance.
Do While File.Exists(FilePath)
FileNumber = FileNumber + 1
' Rebuild the Filename part wtih all the info
FileName = FileWithoutExtension & "-" & FileNumber.ToString("D3") + FileExtension
FilePath = Path.Combine(CurrentDirectory, FileName)
Loop
NewWorkbook.SaveAs(FilePath)