如果文件存在则在末尾添加数字

时间:2015-06-23 06:31:18

标签: vb.net

可能是一个简单的问题,但我可以;弄清楚如何去做。我试图实现的是,如果文件存在,我想用(x)创建文件。例如,myfile.csv存在然后创建myfile.csv(1)如果存在create myfile.csv(2),依此类推。到目前为止我所做的是:

Dim filename As String = "C:\file.csv"

        If IO.File.Exists(filename) Then
            filename = filename & "(1)"             '"C:\file.csv(1)"
            If IO.File.Exists(filename) Then
                'C:\file.csv(2)
                '...
            End If
        End If

新代码:

   Private Function SeachAndCreate(filePath As String) As String
        If File.Exists(filePath) Then
            Dim folderPath = Path.GetDirectoryName(filePath)
            Dim fileName = Path.GetFileNameWithoutExtension(filePath)
            Dim extension = Path.GetExtension(filePath)
            Dim fileNumber = 0

            Do
                fileNumber += 1
                filePath = Path.Combine(folderPath,
                                        String.Format("{0}_({1}){2}",
                                                      fileName,
                                                      fileNumber,
                                                      extension))
            Loop While File.Exists(filePath)

            File.Create(filePath)

        End If

        Return filePath
    End Function

2 个答案:

答案 0 :(得分:0)

使用while语句,filename = filename & "(" & cnt & ")"

为什么不归档(1).csv?

答案 1 :(得分:0)

增加实际文件名而不是扩展名更有意义(至少对我而言)。所以,file.csvfile(1).csvfile(2).csv等等。

无论哪种方式,你都可以循环执行此操作。

Dim fileName As String = "C:\file"
Dim fileExtension As String = ".csv"
Dim fileNumber As Integer = 1
Do
    If Not (IO.File.Exists(fileName & "(" & fileNumber.ToString & ")" & fileExtension) Then
        'The file does not exist, do something..
        Exit Do
    Else
        'The file does exist, so increment and try the next one
        fileNumber = fileNumber + 1
    End If
Loop

请注意,这不会检查是否存在没有数字的文件(例如,file.csv)。我会留下那部分给你。