File.Exists 保存前不将文件编号添加到目录中的现有文件

File.Exists Is Not Adding File Number to Existing File in Directory Before Saving

我正在尝试检查该文件是否存在于保存应用程序的目录中,如果存在,则在末尾添加一个数字-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 无法识别该文件已经存在,我该如何解决?

您的代码中存在逻辑问题。您继续修改同一个变量并不断构建新名称。
例如。假设最初有一个名称为 "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)