diff --git a/blog/golang/golang-standard.md b/blog/golang/golang-standard.md index b9db4df7ca99bdba94e865a568e84ed7ed62d665..f51595648c2ca39512abce7c971811c7084cd9ef 100644 --- a/blog/golang/golang-standard.md +++ b/blog/golang/golang-standard.md @@ -6,7 +6,6 @@ os模块实现了平台无关的编程接口 - 创建文件 ```go @@ -27,7 +26,7 @@ func main() { fmt.Printf("file.Name(): %v\n", file.Name()) // file.Name(): demo.txt } -} +} ``` @@ -222,4 +221,131 @@ func main() { } } +``` + +### File文件读写操作 + +打开现有文件 + +```go + +package main + +import ( + "fmt" + "os" +) + +func main() { + f, err := os.Open("demo.txt") + + if err != nil { + fmt.Printf("err: %v\n", err) + } else { + fmt.Printf("f.Name(): %v\n", f.Name()) + // f.Name(): demo.txt + f.Close() + } +} + +``` + +如果不存在则创建 + +```go +package main + +import ( + "fmt" + "os" +) + +func main() { + // 如果不存在则创建 + f, err := os.OpenFile("demo.txt", os.O_RDWR|os.O_CREATE, os.ModePerm) + + if err != nil { + fmt.Printf("err: %v\n", err) + } else { + fmt.Printf("f.Name(): %v\n", f.Name()) + // f.Name(): demo.txt + f.Close() + } +} + +``` + +其他方法 + +```go +// 等价于:OpenFile(name, O_RDWR|O_CREATE|O_TRUNC, 0666) +f, err := os.Create("demo.txt") + + +// 创建临时文件 +f, _ := os.CreateTemp("", "test") +fmt.Printf("f.Name(): %v\n", f.Name()) +// f.Name(): /var/folders/43/llymqbps19d74q2h_bgb00mr0000gn/T/test218970504 + + +// 从指定字节数开始读取 +n, err := f.ReadAt(buf, 3) + +// 定位光标 +f.Seek(3, 0) +``` + +按照字节数去取文件 + +```go +package main + +import ( + "fmt" + "io" + "os" +) + +func main() { + f, _ := os.Open("demo.txt") + + for { + // 字节缓冲区 + buf := make([]byte, 3) + + n, err := f.Read(buf) + + if err == io.EOF { + break + } + + fmt.Printf("n: %v\n", n) + fmt.Printf("string(buf): %v\n", string(buf)) + } + + f.Close() +} + +``` + +遍历目录 + +```go +package main + +import ( + "fmt" + "os" +) + +func main() { + dirs, _ := os.ReadDir("./") + for _, dir := range dirs { + // 判断是否是目录 + fmt.Printf("dir: %v\n", dir.IsDir()) + // 输出名称 + fmt.Printf("dir: %v\n", dir.Name()) + } +} + ``` \ No newline at end of file diff --git a/blog/golang/index.md b/blog/golang/index.md index 3ae65fd9680be5197110c74d26e7d919921f0a85..7ca329b6ade6ad2f4c2cf863f9b94027eb88563d 100644 --- a/blog/golang/index.md +++ b/blog/golang/index.md @@ -54,4 +54,5 @@ https://www.bilibili.com/video/BV1ME411Y71o?p=27&spm_id_from=pageDriver&vd_source=efbb4dc944fa761b6e016ce2ca5933da -https://www.bilibili.com/video/BV1zR4y1t7Wj/?p=79&spm_id_from=pageDriver&vd_source=efbb4dc944fa761b6e016ce2ca5933da \ No newline at end of file + +https://www.bilibili.com/video/BV1zR4y1t7Wj?p=80&vd_source=efbb4dc944fa761b6e016ce2ca5933da \ No newline at end of file