更改多个文件的文件扩展名

时间:2015-04-12 00:22:06

标签: vb.net

我在文件夹中有一些文件。

  

d:\文本\ Text.FL
  d:\文\ Text1.FL
  d:\文本\ Text2.FL

我想重命名扩展名" .FL "到" .txt "
我已尝试使用此代码

My.Computer.FileSystem.RenameFile("D:\Text\Text.fl","Text.txt")

但我想缩短该代码

2 个答案:

答案 0 :(得分:2)

您想缩短一行代码吗?如果导入File.Move命名空间,则可以调用System.IO,但在这种情况下需要传递两个完整路径。也许你真正的意思是你不想为每个文件写出这样的一行。如果你想改变所有" .fl"文件到" .txt"在文件夹中,这就是我要做的事情:

For Each filePath In Directory.GetFiles(folderPath, "*.fl")
    File.Move(filePath, Path.ChangeExtension(filePath, ".txt"))
Next

答案 1 :(得分:1)

以下文件重命名方法的示例用法:

Dim dInfo As New DirectoryInfo("C:\Directory")

dInfo.EnumerateFiles("*.FL", SearchOption.TopDirectoryOnly).ToList.
    ForEach(Sub(fInfo As FileInfo)
                RenameFile(fInfo.FullName, fInfo.Name, ".txt")
            End Sub)

有了这个:

''' <summary>
''' Renames a file.
''' </summary>
''' <param name="sourceFile">The source file.</param>
''' <param name="targetFileName">The target file name.</param>
''' <param name="targetFileExt">The target file ext.</param>
''' <exception cref="IO.FileNotFoundException">File not found.</exception>
Public Shared Sub RenameFile(ByVal sourceFile As FileInfo,
                             ByVal targetFileName As String,
                             Optional ByVal targetFileExt As String = "")

    Try
        If String.IsNullOrEmpty(targetFileExt) Then
            targetFileExt = sourceFile.Extension.Remove(0, 1)

        ElseIf targetFileExt.StartsWith("."c) Then
            targetFileExt = targetFileExt.Remove(0, 1)

        End If

        sourceFile.MoveTo(IO.Path.Combine(sourceFile.Directory.FullName,
                                     String.Format("{0}.{1}", targetFileName, targetFileExt)))

    Catch ex As Exception
        Throw

    End Try

End Sub