Golang filesystem: Difference between revisions

From wikinotes
No edit summary
Line 85: Line 85:
File.Stat
File.Stat
File.FileInfo
File.FileInfo
</syntaxhighlight>
<syntaxhighlight lang="go">
require "os"
os.WriteFile("/var/tmp/foo.txt", []byte("abc"), 0644)
conts, err := os.ReadFile("/var/tmp/foo.txt")
</syntaxhighlight>
</syntaxhighlight>
</blockquote><!-- Files -->
</blockquote><!-- Files -->

Revision as of 16:20, 18 June 2022

Errors

require "errors"
require "os"
require "io/fs"

_, err := os.Stat("foo.bar")
if errors.Is(err, fs.ErrExist) {...}
if errors.Is(err, fs.ErrNotExist) {...}
if errors.Is(err, fs.ErrPermission) {...}
if errors.Is(err, fs.ErrPermission) {...}

The old method defines Is${N} functions to test for various os package errors.


require "os"

// example filesystem operations that create errors
info, err := os.Stat("foo.bar")
fd, err := os.Create("/etc/foo")

// example error checks
if os.IsExist(err) {...}
if os.IsNotExist(err) {...}
if os.IsPermission(err) {...}

Locations

// XDG spec
dir, err := os.UserHomeDir()
dir, err := os.UserConfigDir()
dir, err := os.UserCacheDir()

Common Operations

import "os"
import "errors"

// check if file exists
if _, err := os.Stat("/var/foo.txt"); errors.Is(err, fs.ErrNotExist) {
    fmt.Println("file does not exist!")
}

dir, err := os.Getwd()
err := os.Chmod("foo.txt", 0644)
err := os.Chown("foo.txt", -1, -1)          // '-1' means do not change uid/gid
err := os.Chown("foo.txt", 1000, -1)        // set uid '1000' as owner

err := os.Link("/var/foo", "/var/bar")      // hardlink
err := os.Symlink("/var/foo", "/var/bar")   // symlink
err := os.Mkdir("/var/foo")                 // create directory (non recursively)
err := os.MkdirAll("/var/foo/bar/baz")      // creates directory (recursively)

err := os.Remove("/var/tmp/foo.bar")
err := os.RemoveAll("/var/tmp/foo")
err := os.Rename("a", "b")

Files

For more details, see golang input/output

File.Create
File.NewFile
File.Open

File.Write
File.WriteString

File.Stat
File.FileInfo
require "os"

os.WriteFile("/var/tmp/foo.txt", []byte("abc"), 0644)

conts, err := os.ReadFile("/var/tmp/foo.txt")

Temporary Files/Directories

Temporary Directories

// creates tempdir,
// '*' in filename is placement of random str
// you must delete!
path, err := os.MkdirTemp("/var/tmp", "cache-*")
defer os.RemoveAll(path)
File.CreateTemp