Golang 复制工具

问题描述

嘿,如果我一直在使用这个复制工具作为练习,因为我对 Golang 和编程完全陌生。 到目前为止,它确实以我想要的方式工作,但我正在尝试对其进行精细切割。 该工具要求提供源路径,我的代码添加一个 "\" 以方便使用,但我希望程序忽略每当我在路径末尾放置 "\" 或忘记这样做时。程序应该自己添加它以防我忘记并忽略如果已经有一个

代码

func main() {

    fmt.Println("Willkommen beim Rocon copy-Tool." +
        "Wählen Sie bitte aus:")
    fmt.Println("Drücken Sie die 1 um einen Dateipfad auszuwählen")
    fmt.Println("Drücken Sie die 2 um das Programm zu beenden")

    scanner := bufio.NewScanner(os.Stdin)
    scanner.Scan()
    input := scanner.Text()

    if input == "1" {


        fmt.Print("Geben Sie den gewünschten Dateipfad an: ")

        scanner = bufio.NewScanner(os.Stdin)
        scanner.Scan()
        srcPath := scanner.Text()

        fmt.Print("Geben Sie den gewünschten Dateinamen an: ")
        scanner.Scan()
        filename := scanner.Text()

        // Open the source file
        srcFile,err := os.Open(srcPath+ "\\" + filename)
        if err != nil {
            log.Fatal(err)
        }
        defer srcFile.Close()

        // Create the destination file
        fmt.Print("Geben Sie den gewünschten Speicherort an: ")
        scanner.Scan()
        scanner.Text()
        dstPath := scanner.Text()

        dstFile,err := os.Create(dstPath + filename)
        if err != nil {
            log.Fatal(err)
        }
        defer dstFile.Close()

        // copy the file
        _,err = io.copy(dstFile,srcFile)
    }
}

我希望德语查询在阅读时不要打扰。

解决方法

正如 kostix 指出的那样,我认为 filepath.Join 是您最好的选择。

这一行:

srcFile,err := os.Open(srcPath+ "\\" + filename)

会变成:

srcFile,err := os.Open(filepath.Join(srcPath,filename))

(您需要导入“路径/文件路径”)

您可以对目标文件执行相同操作。