// 读
package main
import (
"fmt"
"io/ioutil"
)
func main() {
b, err := ioutil.ReadFile("test.log")
if err != nil {
fmt.Print(err)
}
fmt.Println(b)
str := string(b)
fmt.Println(str)
}
// 写
package main
import (
"io/ioutil"
)
func check(e error) {
if e != nil {
panic(e)
}
}
func main() {
d1 := []byte("hello\ngo\n")
err := ioutil.WriteFile("test.txt", d1, 0644)
check(err)
}
// 读
package main
import (
"log"
"os"
)
func main() {
f, err := os.OpenFile("notes.txt", os.O_RDWR|os.O_CREATE, 0755)
if err != nil {
log.Fatal(err)
}
if err := f.Close(); err != nil {
log.Fatal(err)
}
}
// 写
package main
import (
"bufio"
"fmt"
"io/ioutil"
"os"
)
func check(e error) {
if e != nil {
panic(e)
}
}
func main() {
f, err := os.Create("/tmp/dat2")
check(err)
defer f.Close()
d2 := []byte{115, 111, 109, 101, 10}
n2, err := f.Write(d2)
check(err)
fmt.Printf("wrote %d bytes\n", n2)
n3, err := f.WriteString("writes\n")
fmt.Printf("wrote %d bytes\n", n3)
f.Sync()
w := bufio.NewWriter(f)
n4, err := w.WriteString("buffered\n")
fmt.Printf("wrote %d bytes\n", n4)
w.Flush()
}
func main() {
filename := flag.String("f", "", "Specify the file name")
flag.Parse()
if filename == nil || len(*filename) == 0 {
flag.Usage()
os.Exit(1)
}
contents, err := ioutil.ReadFile(*filename)
if err != nil {
log.Printf("Failed to read file %s,err:%s", *filename, err.Error())
os.Exit(1)
}
fmt.Println(string(contents))
}
func main() {
filename := flag.String("f", "", "Specify the file name")
flag.Parse()
if filename == nil || len(*filename) == 0 {
flag.Usage()
os.Exit(1)
}
f,err := os.Open(*filename)
if err != nil{
log.Printf("Failed to open file %s,err:%s",*filename,err.Error())
os.Exit(1)
}
defer f.Close()
buf := bufio.NewReader(f)
for {
line,err := buf.ReadBytes('\n')
log.Print(string(line))
if err != nil{
if err == io.EOF{
log.Println("end of file")
break
}else {
log.Printf("read file err:%s",err.Error())
break
}
}
}
}
func main() {
filename := flag.String("f", "", "Specify the file name")
flag.Parse()
if filename == nil || len(*filename) == 0 {
flag.Usage()
os.Exit(1)
}
f, err := os.Open(*filename)
if err != nil {
log.Printf("Failed to read file %s,err:%s", *filename, err.Error())
os.Exit(1)
}
//指定一次读取的文件大小
buf := make([]byte, 64)
for {
n, err := f.Read(buf)
if err != nil && err != io.EOF {
log.Printf("Failed to read,err:%s", err.Error())
break
}
if n == 0 {
break
}
fmt.Print(string(buf[:n]))
}
}
// 流处理
func ReadFile(filePath string, handle func(string)) error {
f, err := os.Open(filePath)
defer f.Close()
if err != nil {
return err
}
buf := bufio.NewReader(f)
for {
line, err := buf.ReadLine("\n")
line = strings.TrimSpace(line)
handle(line)
if err != nil {
if err == io.EOF{
return nil
}
return err
}
return nil
}
}
// 分片处理
func ReadBigFile(fileName string, handle func([]byte)) error {
f, err := os.Open(fileName)
if err != nil {
fmt.Println("can't opened this file")
return err
}
defer f.Close()
s := make([]byte, 4096)
for {
switch nr, err := f.Read(s[:]); true {
case nr < 0:
fmt.Fprintf(os.Stderr, "cat: error reading: %s\n", err.Error())
os.Exit(1)
case nr == 0: // EOF
return nil
case nr > 0:
handle(s[0:nr])
}
}
return nil
}
腾图小抄 SCWY.net v0.03 小抄561条 自2022-01-02访问366919次