107.【并发与标准库】(七)

简介: 107.【并发与标准库】
  1. 定位的操作

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)
}

  1. 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())
  }
}


相关文章
|
4月前
|
算法 数据处理 Python
Python并发编程:解密异步IO与多线程
本文将深入探讨Python中的并发编程技术,重点介绍异步IO和多线程两种常见的并发模型。通过对比它们的特点、适用场景和实现方式,帮助读者更好地理解并发编程的核心概念,并掌握在不同场景下选择合适的并发模型的方法。
|
12月前
|
缓存 Go
107.【并发与标准库】(二)
107.【并发与标准库】
38 0
|
4月前
|
数据采集 数据库 C++
python并发编程:并发编程中是选择多线程呢?还是多进程呢?还是多协程呢?
python并发编程:并发编程中是选择多线程呢?还是多进程呢?还是多协程呢?
46 0
|
12月前
|
缓存 索引
107.【并发与标准库】(九)
107.【并发与标准库】
32 0
|
10月前
|
编译器 Linux 调度
|
15天前
|
消息中间件 存储 安全
python多进程并发编程之互斥锁与进程间的通信
python多进程并发编程之互斥锁与进程间的通信
|
2月前
|
数据采集 算法 数据处理
Python中的并发编程:异步IO与多线程对比分析
传统的多线程编程在Python中因为全局解释器锁(GIL)的存在受到限制,导致多线程并不能充分利用多核处理器的优势。本文将探讨Python中的异步IO编程与多线程编程的差异与优劣,并分析适合的应用场景。
|
3月前
|
并行计算 API Python
Python中的并发编程(1)并发相关概念
Python中的并发编程(1)并发相关概念
|
4月前
|
消息中间件 程序员 调度
Python并发编程:利用多线程提升程序性能
本文探讨了Python中的并发编程技术,重点介绍了如何利用多线程提升程序性能。通过分析多线程的原理和实现方式,以及线程间的通信和同步方法,读者可以了解如何在Python中编写高效的并发程序,提升程序的执行效率和响应速度。
|
4月前
|
消息中间件 安全 调度
基于Python的性能优化(线程、协程、进程)
一、多线程 在CPU不密集、IO密集的任务下,多线程可以一定程度的提升运行效率。