.net 如果文件已经存在,如何增加文件名

.net 如果文件已经存在,如何增加文件名,.net,vb.net,.net,Vb.net,在我的vb.net winform应用程序中,我正在将文件(例如:sample.xls)从一个文件夹移动到另一个文件夹。如果已经存在同名文件,则新文件名应递增(例如:sample(1.xls)。我如何实现这一点?嗨,这里有一个非常“程序化”的答案: 您将需要System.IO的imports语句上述过程在末尾添加计数器,但我的案例a希望保留文件的扩展名,因此我将函数扩展为: Public Shared Function FileExistIncrementer(ByVal OrginialFil

在我的vb.net winform应用程序中,我正在将文件(例如:sample.xls)从一个文件夹移动到另一个文件夹。如果已经存在同名文件,则新文件名应递增(例如:sample(1.xls)。我如何实现这一点?

嗨,这里有一个非常“程序化”的答案:


您将需要System.IO的imports语句上述过程在末尾添加计数器,但我的案例a希望保留文件的扩展名,因此我将函数扩展为:

Public Shared Function FileExistIncrementer(ByVal OrginialFileName As String) As String
    Dim counter As Integer = 0
    Dim NewFileName As String = OrginialFileName
    While File.Exists(NewFileName)
        counter = counter + 1
        NewFileName = String.Format("{0}\{1}-{2}{3}", Path.GetDirectoryName(OrginialFileName), Path.GetFileNameWithoutExtension(OrginialFileName), counter.ToString(), Path.GetExtension(OrginialFileName))
    End While
    Return NewFileName
End Function

有关此问题的C#版本,请参阅。如果存在数百万个同名文件,例如图像序列,则这不是一个好的解决方案。
Public Shared Function FileExistIncrementer(ByVal OrginialFileName As String) As String
    Dim counter As Integer = 0
    Dim NewFileName As String = OrginialFileName
    While File.Exists(NewFileName)
        counter = counter + 1
        NewFileName = String.Format("{0}\{1}-{2}{3}", Path.GetDirectoryName(OrginialFileName), Path.GetFileNameWithoutExtension(OrginialFileName), counter.ToString(), Path.GetExtension(OrginialFileName))
    End While
    Return NewFileName
End Function