Go filesystem operations
Notes on Go filesystem operations.
Copying files
Go does not have an utility method to copy files. We have to rely on writing our own implementation using the reading and writing functionality in other packages. As an example:
package main
import (
"io"
"log"
"os"
)
func main() {
, err := os.Open("./foo.txt")
fromif err != nil {
.Fatal(err)
log}
defer from.Close()
, err := os.OpenFile("./bar.txt", os.O_RDWR|os.O_CREATE, 0666)
toif err != nil {
.Fatal(err)
log}
defer to.Close()
, err = io.Copy(to, from)
_if err != nil {
.Fatal(err)
log}
}
Path operations
Basepath
To get the basepath of a path string we use the Dir method:
.Dir("/etc/foo/file.txt") // "/etc/foo" filepath
Check if directory exists
if _, err := os.Stat("/etc/foo/"); os.IsNotExist(err) {
// do something because it does not exist
}
### Create nested directories
Use MkdirAll:
.MkdirAll("/etc/long/nested/path/to/create", os.ModePerm) os