- 定位的操作
package main import ( "fmt" "os" ) func readOps() { open, _ := os.Open("test.txt") open.Seek(3, 0)// 就是从哪里开始读取 3代表从第三位开始。0是相对于开头 bytes := make([]byte, 10) read, _ := open.Read(bytes) fmt.Printf("读取的字节个数为:%v\n", read) fmt.Printf("读取到的内容是:%v\n", string(bytes)) open.Close() } func main() { readOps() }
3.标准库os模块之文件写操作
(1).利用缓存进行写的操作
open->默认只有读。 openfile->可以设置权限 file, _ := os.OpenFile("test.txt", os.O_RDWR|os.O_APPEND, 755) // 读写的权限|追加 . 755 file, _ := os.OpenFile("test.txt", os.O_RDWR|os.O_TRUNC, 755) // 读写权限+覆盖 file, _ := os.OpenFile("test.txt", os.O_RDWR|os.O_CREATE, 755) //读写权限+创建
package main import "os" func write() { file, _ := os.OpenFile("test.txt", os.O_RDWR|os.O_APPEND, 755) // 读写的权限|追加 . 755 s := "你好,世界的人民!!!" file.Write([]byte(s)) file.Close() } func main() { write() }
(2).直接写字符串不用缓冲区
package main import "os" func write() { file, _ := os.OpenFile("test.txt", os.O_RDWR|os.O_TRUNC, 755) // 读写的权限|追加 . 755 s := "你好,世界的人民!!!" file.WriteString(s) file.Close() } func main() { write() }
(3).从第几个字节开始编写
常见于段落空格
package main import "os" func write() { file, _ := os.OpenFile("test.txt", os.O_RDWR|os.O_TRUNC, 755) // 读写的权限|追加 . 755 s := "你好,世界的人民!!!" file.WriteAt([]byte(s), 3) file.Close() } func main() { write() }
4.标准库os包之进程 💢
5.标准库os包之环境相关
所有的环境变量
(1).对环境变量的修改
package main import ( "fmt" "os" ) func main() { // 获得所有环境变量 s := os.Environ() fmt.Printf("%v\n", s) // 获得某个环境变量 s2 := os.Getenv("GOPATH") fmt.Printf("%v\n", s2) // 设置环境变量 os.Setenv("env1", "env1") s2 = os.Getenv("sss") fmt.Printf("%v\n", s2) println("-----------------------") // 查找 s3, b := os.LookupEnv("env1") fmt.Printf("b: %v\n", b) fmt.Printf("s3: %v\n", s3) // 替换 os.Setenv("NAME", "gopher") os.Setenv("BURROW", "/usr/gopher") println(os.ExpandEnv("$NAME lives in ${BURROW}.")) // 清空环境变量 //os.Clearenv() }
小白Go语言请不要运行!!!!!
6.标准库io包之输入输出🛑
(1).基础介绍
Go语言中,为了方便开发者使用,将IO操作封装以下几个包
- IO 为IO原语提供基本的接口
- IO 封装了一些实用的IO函数
- fmt实现格式化 IO,雷士c语言中的printf/scanf
- bufio 实现带缓冲I/O
(2).基本的IO接口
io是接口 os实现了io接口
在io包中最重要的是两个接口: Reader和Writer接口。
Reader 接口
type Reader interface{ read(p []byte){n int, err error} }
Writer 接口
type Writer interface{ write(p []byte){n int, err error} }
(3).实现IO接口的类型
哪些类型实现了读和写的接口
1. os 实现了 ->读和写的接口 2. strings.Reader -> 读 3. bufio.Reader/Writer ->读写 4. bytes.Buffer ->读写 5. bytes.Reader -> 读 6. compress/gzip.Reader/StreamWriter ->读写 7. crypto/cipher.StreamReader/StreamWriter ->读写 8. crypto/tls.Conn ->读写 9. encoding/csv.Reader/Writer ->读写
第二个实现方式的
package main import ( "fmt" "strings" ) func main() { reader := strings.NewReader("Hello world") buf := make([]byte, 20) //设置缓冲区 reader.Read(buf) // 读到缓冲区中 fmt.Printf("%v", string(buf)) }
(4).IO实现拷贝文件
package main import ( "io" "log" "os" "strings" ) func testCopy() { reader := strings.NewReader("hello world") // 也可以拷贝到一个文件中去 _, err := io.Copy(os.Stdout, reader) // 参数第一个是 输出到控制台 第二个是: 读取 if err != nil { log.Fatal(err) } } func main() { testCopy() }
7.标准库ioutil包🛑 【推荐】
(1).基础介绍
封装了一些实用的io函数
(2).实现方法
ReadAll
package main import ( "fmt" "io/ioutil" "log" "strings" ) func main() { r := strings.NewReader("Go is a general-purpose language designed with systems programming in mind.") b, err := ioutil.ReadAll(r) //读取全部 if err != nil { log.Fatal(err) } fmt.Printf("%s", b) }
- ReadDir
遍历目录
package main import ( "fmt" "io/ioutil" "log" ) func main() { files, err := ioutil.ReadDir(".") if err != nil { log.Fatal(err) } for _, file := range files { fmt.Println(file.Name()) } }