gobyexample/files/files.go
2024-05-03 16:58:40 +05:30

84 lines
1.4 KiB
Go

package files
import (
"bufio"
"fmt"
"io"
"os"
)
func Files() {
Reading()
Writing()
}
func check(err error) {
if err != nil {
panic(err)
}
}
func Reading() {
data, err := os.ReadFile("/etc/hosts")
check(err)
fmt.Println("Contents:")
fmt.Println(string(data))
f, err := os.Open("/etc/hosts")
defer f.Close()
check(err)
bytes1 := make([]byte, 5)
n1, err := f.Read(bytes1)
check(err)
fmt.Printf("Read %d bytes: %v\n", n1, string(bytes1[:n1]))
o1, err := f.Seek(5, 0)
check(err)
bytes2 := make([]byte, 4)
n2, err := f.Read(bytes2)
check(err)
fmt.Printf("Read %d bytes @ %d: %v\n", n2, o1, string(bytes2[:n2]))
o2, err := f.Seek(5, 0)
check(err)
bytes3 := make([]byte, 4)
n3, err := io.ReadAtLeast(f, bytes3, 2)
check(err)
fmt.Printf("Read %d bytes @ %d: %v\n", n3, o2, string(bytes3))
o3, err := f.Seek(5, 0)
check(err)
br := bufio.NewReader(f)
bytes4, err := br.Peek(4)
check(err)
fmt.Printf("Read @ %d: %v\n", o3, string(bytes4))
}
func Writing() {
err := os.WriteFile("/tmp/go.files.write.txt", []byte("hello go!"), 0600)
check(err)
f, err := os.Create("/tmp/go.files.write2.txt")
check(err)
n1, err := f.Write([]byte{87, 73, 78})
check(err)
fmt.Printf("Wrote %d bytes\n", n1)
n2, err := f.WriteString(" macOS")
check(err)
fmt.Printf("Wrote %d bytes\n", n2)
f.Sync()
bw := bufio.NewWriter(f)
n3, err := bw.WriteString(" linux")
check(err)
fmt.Printf("Wrote %d bytes\n", n3)
bw.Flush()
}