5

我了解如何在VB.NET中重命名文件,正如我在帖子末尾的代码中使用的那样。但是,我想知道是否可以重命名文件,如果文件存在,那么重命名它并将 +1 添加到文件名?

所以如果我运行代码。

'第一次运行

My.Computer.FileSystem.RenameFile("c:\test\test.txt", "c:\test\NewName.txt")

'再次运行它,但它应该添加+1,因为文件已经存在,所以它应该是“c:\test\NewName1.txt”

My.Computer.FileSystem.RenameFile("c:\test\test.txt", "c:\test\NewName.txt")

更新

我决定与其重命名和+1,不如只给它加上日期戳,所以对于任何像我一样挣扎的人:

My.Computer.FileSystem.RenameFile("c:\test\test.txt", "Test" & Format(Date.Now, "ddMMyy") & ".txt")
4

5 回答 5

10

您需要为此编写自己的逻辑。

该类File有许多处理文件的有用方法。

If File.Exists(filePath) Then
  ' Give a new name
Else
  ' Use existing name
End If

该类Path有许多处理文件路径的方法。

Path.GetFileNameWithoutExtension(filePath)
于 2012-05-28T12:26:12.270 回答
6
If System.IO.File.Exists("c:\test\NewName.txt") Then
   ' add +1 or loop exists with increment on the end until file doesn't exist
End If
于 2012-05-28T12:27:06.293 回答
2

您无需在newFileName参数中提及完整的文件路径,只需在此处提及新文件名,否则您将获得ArgumentException.

Dim filePath As String = "C:\fingerprint1"

If File.Exists(filePath) Then

    Dim strNewFileName As String = "Fingerprint221"

    My.Computer.FileSystem.RenameFile(filePath, strNewFileName)

 End If
于 2014-03-23T08:57:29.673 回答
2

重命名文件的另一种简单方法是使用 System.IO.File 的 Move() 方法。

例子:

System.IO.File.Move("C:\temp\file1.txt", "C:\temp\file1_renamed.txt")
于 2019-08-02T07:39:42.997 回答
0
   Public Sub RenameFile(ByRef FileFind As String, ByRef NewReplaceFileName As String)
        Dim Ada As String = Path.GetFileNameWithoutExtension(FileFind)
        'VS2013 Dim Ada As String = File.Exists(FileFind)
        If Ada.Length > 0 Then
            My.Computer.FileSystem.RenameFile(FileFind, NewReplaceFileName)
            Exit Sub
        Else
            MsgBox("File doesn't exists")
        End If
    End Sub
于 2018-07-16T12:19:21.710 回答