面试题答案
一键面试- 代码实现思路:
- 导入必要的包,包括
flag
用于处理命令行参数,fmt
用于格式化输出,os
用于操作系统相关操作,path/filepath
用于处理文件路径。 - 使用
flag
包定义源目录、目标目录、是否压缩和备份文件前缀名的参数。 - 解析命令行参数。
- 检查目标目录是否存在,不存在则创建。
- 实现备份逻辑,根据是否压缩决定备份方式。
- 备份完成后打印成功提示信息。
- 导入必要的包,包括
- 关键代码:
package main
import (
"flag"
"fmt"
"os"
"path/filepath"
)
func main() {
var sourceDir string
var targetDir string
var compress bool
var prefix string
flag.StringVar(&sourceDir, "s", "", "源目录")
flag.StringVar(&targetDir, "t", "", "目标目录")
flag.BoolVar(&compress, "c", false, "是否压缩备份文件")
flag.StringVar(&prefix, "p", "", "备份文件的前缀名")
flag.Parse()
if sourceDir == "" || targetDir == "" {
fmt.Println("源目录和目标目录不能为空")
return
}
// 检查目标目录是否存在,不存在则创建
if _, err := os.Stat(targetDir); os.IsNotExist(err) {
err := os.MkdirAll(targetDir, 0755)
if err != nil {
fmt.Printf("创建目标目录失败: %v\n", err)
return
}
}
// 这里省略具体的备份实现逻辑,以打印信息代替
fmt.Printf("从 %s 备份到 %s,是否压缩: %v,前缀名: %s\n", sourceDir, targetDir, compress, prefix)
fmt.Println("备份成功")
}
上述代码定义了命令行参数,检查了目标目录并给出了简单的备份成功提示。实际备份逻辑(如文件复制、压缩等)需要根据具体需求进一步实现。