Golang - как указать путь к директории для windows
Этот код работает на Windows в терминале bash, но не работает в терминале cmd.
func main() {
fmt.Print("Enter source directory path: ")
inBuf := bufio.NewReader(os.Stdin)
inDir, _ := inBuf.ReadString('\n')
inDir = strings.Replace(inDir, "\n", "", -1)
files, err := ioutil.ReadDir(inDir)
if err != nil {
log.Fatalf("error reading files from dir %s : %s", inDir, err.Error())
}
for _, file := range files {
if file.IsDir() {
continue
}
fmt.Printf("filename: %s", file.Name())
}
fmt.Println("ok")
}
Результат в cmd:
C:\Users\dev\go\src\awesomeProject4>awesomeProject4.exe
Enter source directory path: C:\files
: The filename, directory name, or volume label syntax is incorrect.
Подскажите, что надо изменить в коде или как вводить путь к директории в stdin, чтобы работало в cmd.exe?
Ответы (1 шт):
Автор решения: zed
→ Ссылка
В Windows перевод строки, это два символа \r\n, а не один \n как в Unix. Соответственно, вам это надо учитывать - замените у себя в коде строку inDir = strings.Replace(inDir, "\n", "", -1) на две такие:
inDir = strings.TrimSuffix(inDir, "\n")
inDir = strings.TrimSuffix(inDir, "\r")