问题描述
嘿,如果我一直在使用这个复制工具作为练习,因为我对 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))
(您需要导入“路径/文件路径”)
您可以对目标文件执行相同操作。