亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

無法在 Windows 上創建文件夾

無法在 Windows 上創建文件夾

Go
開心每一天1111 2022-12-19 20:49:09
我試圖在 Windows 上創建一個文件夾,但不斷收到錯誤消息,我不明白為什么。代碼片段:reader := bufio.NewReader(os.Stdin)fmt.Print("Hostname: ")hostname, _ := reader.ReadString('\n')now := time.Now().Format("20060102150405")var folderName string = fmt.Sprintf("%s_%s", now, hostname)err := os.Mkdir(folderName, os.ModePerm)if err != nil {    log.Fatal(err)}錯誤(從荷蘭語翻譯):2022/06/10 13:37:13 mkdir 20220610133713_TEST: The syntax of the file name, folder name or volume name is incorrect.exit status 1我嘗試使用帶 \\ 的完整路徑和相對路徑 .\ 或 .\\我用下面的代碼解決了這個錯誤,但這不是要走的路......;)cmd := exec.Command("cmd.exe", "/C", fmt.Sprintf("mkdir %s", folderName))err := cmd.Run()這些問題可能很明顯,但我看不出原因。也許是 Windows 特定的東西?不管怎樣,感謝您的觀看。
查看完整描述

1 回答

?
慕容3067478

TA貢獻1773條經驗 獲得超3個贊

Reader.ReadString()記錄:

ReadString 一直讀取到輸入中第一次出現 delim 為止,返回一個包含數據的字符串,直到并包括 delimiter

Reader.ReadString('\n')不修剪換行符,返回的字符串將包含尾隨\n字符。

打印出來就可以看到了:

fmt.Printf("%q\n", folderName)

這將輸出(在Go Playground上嘗試):

"20091110230000_TEST\n"

Windows 不允許在文件夾名稱中使用換行符。

解決方案:使用bufio.Scanner.

例如:

scanner := bufio.NewScanner(strings.NewReader("TEST\n"))

if !scanner.Scan() {

    return // No input

}

hostname := scanner.Text()


now := time.Now().Format("20060102150405")

var folderName string = fmt.Sprintf("%s_%s", now, hostname)


fmt.Printf("%q\n", folderName)

這將輸出(在Go Playground上嘗試):


"20091110230000_TEST"


查看完整回答
反對 回復 2022-12-19
  • 1 回答
  • 0 關注
  • 172 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號