首页 > 解决方案 > 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)
    }
}

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

标签: stringgoif-statementpathname

解决方案


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

这一行:

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

会成为:

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

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

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


推荐阅读