在 F# 中,可以使用 System.IO 命名空间中的类来实现复制文件夹下的所有文件。以下是一个示例代码,它演示了如何实现这个功能。
open System
open System.IO
let rec copyAllFiles sourceDir destDir =
Directory.GetFiles(sourceDir)
|> Array.iter (fun filePath ->
let destFilePath = Path.Combine(destDir, Path.GetFileName(filePath))
File.Copy(filePath, destFilePath, true)
)
Directory.GetDirectories(sourceDir)
|> Array.iter (fun subDir ->
let newDestDir = Path.Combine(destDir, Path.GetFileName(subDir))
Directory.CreateDirectory(newDestDir)
copyAllFiles subDir newDestDir
)
// 使用示例
let sourceDirectory = @"C:\source_directory"
let destinationDirectory = @"C:\destination_directory"
copyAllFiles sourceDirectory destinationDirectory
这段代码中的 copyAllFiles 函数递归地复制了源文件夹下的所有文件和子文件夹到目标文件夹中。具体的步骤如下:
使用 Directory.GetFiles 获取源文件夹下的所有文件路径,并遍历这些文件。
对每个文件,构建目标文件路径,并使用 File.Copy 将文件复制到目标文件夹中。
使用 Directory.GetDirectories 获取源文件夹下的所有子文件夹,并遍历这些子文件夹。
对每个子文件夹,递归调用 copyAllFiles 函数,将其内容复制到相应的目标文件夹中。
请确保在实际使用时将 sourceDirectory 和 destinationDirectory 替换为你实际的源文件夹和目标文件夹路径。此外,要注意处理可能出现的异常情况,例如文件已存在等情况。