package main
import (
"fmt"
"io"
"os"
)
// 打开关闭文件
func openCloseFile() {
// 只能读
/* func Open(name string) (*File, error) {
return OpenFile(name, O_RDONLY, 0)
} */
f, _ := os.Open("test2.txt")
fmt.Printf("f.Name(): %v\n", f.Name())
// 根据第二个参数 可以读写或者创建
f2, _ := os.OpenFile("a1.txt", os.O_RDWR|os.O_CREATE, 0755)
fmt.Printf("f2.Name(): %v\n", f2.Name())
err := f.Close()
fmt.Printf("err: %v\n", err)
err2 := f2.Close()
fmt.Printf("err2: %v\n", err2)
}
// 创建文件
func createFile() {
// 等价于openFile(name,os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0666)
f, _ := os.Create("a2.txt")
fmt.Printf("f.Name(): %v\n", f.Name())
// 第一个参数 目录默认 Temp第二个参数 文件名前缀
f2, _ := os.CreateTemp("", "temp")
fmt.Printf("f2.Name(): %v\n", f2.Name())
}
// 读操作
func readOps() {
// 循环读取
f, _ := os.Open("a1.txt")
for {
buf := make([]byte, 6)
n, err := f.Read(buf)
fmt.Printf("string(buf): %v\n", string(buf))
fmt.Printf("n: %v\n", n)
if err == io.EOF {
break
}
}
f.Close()
}
func readOps1() {
buf := make([]byte, 10)
f2, _ := os.Open("a1.txt")
// 从5开始读10个字节
n2, _ := f2.ReadAt(buf, 5)
fmt.Printf("n2: %v\n", n2)
fmt.Printf("string(buf): %v\n", string(buf))
f2.Close()
}
// 定位
func readOps2() {
f, _ := os.Open("a1.txt")
f.Seek(3, 0)
b := make([]byte, 10)
n, _ := f.Read(b)
fmt.Printf("n: %v\n", n)
fmt.Printf("string(b): %v\n", string(b))
f.Close()
}
func readOps3() {
de, _ := os.ReadDir("a")
for _, v := range de {
fmt.Printf("v.IsDir(): %v\n", v.IsDir())
fmt.Printf("v.Name(): %v\n", v.Name())
}
}
func main() {
// openCloseFile()
// createFile()
// readOps()
// readOps1()
// readOps2()
// readOps3()
}
golang标准库os模块-File文件读操作
最新推荐文章于 2024-02-23 22:35:22 发布