[Go語言] 移動檔案到別的目錄
mv 這個shell指令在Linux系統裡用來移動檔案。我想要在Go語言程式碼裡直接移動檔案, 所以我搜尋了 golang os.Move [1] 然後發現 os.Rename 是我所需要的方法。 讓我們試看看它是如何運作的。
如下,有一個檔案跟一個目錄:
.
├── hello.txt
└── testdir/
我想要移動 hello.txt 到 testdir/ 目錄下,我寫了下面的程式碼:
package main
import (
"os"
)
func main() {
err := os.Rename("hello.txt", "testdir/")
if err != nil {
panic(err)
}
}
看起來很合理,因為這是我們在Linux shell利用 mv 指令的方式。當我運行Go程式碼時, 發生了panic:
panic: rename hello.txt testdir/: file exists
所以我們不能只是把 testdir/ 放在 os.Rename 的新路徑參數。 我們必須指定完整的新路徑,包含檔名:
package main
import (
"os"
)
func main() {
err := os.Rename("hello.txt", "testdir/hello.txt")
if err != nil {
panic(err)
}
}
然後我們就能得到我們想要的結果:
.
└── testdir/
└── hello.txt
Tested on: Ubuntu Linux 17.10, Go 1.10
References:
[1] |
[2] | func Rename - os - The Go Programming Language |
[3] |