我在文件夹中有一些文件。
d:\文本\ Text.FL
d:\文\ Text1.FL
d:\文本\ Text2.FL
我想重命名扩展名" .FL "到" .txt "
我已尝试使用此代码
My.Computer.FileSystem.RenameFile("D:\Text\Text.fl","Text.txt")
但我想缩短该代码
答案 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