如何外包南宁网站建设策划以创建并运营一个会员网站?
摘要:南宁网站建设策划外包,怎么做刷会员网站,兰州企业做网站,企业对网站建设的发展1 概述 2 整个文件读入内存 直接将数据直接读取入内存,是效率最高的一种方式,但此种方式&am
南宁网站建设策划外包,怎么做刷会员网站,兰州企业做网站,企业对网站建设的发展1 概述 2 整个文件读入内存
直接将数据直接读取入内存#xff0c;是效率最高的一种方式#xff0c;但此种方式#xff0c;仅适用于小文件#xff0c;对于大文件#xff0c;则不适合#xff0c;因为比较浪费内存。
2.1 直接指定文化名读取 在 Go 1.16 开始#xff0c;i…1 概述 2 整个文件读入内存
直接将数据直接读取入内存是效率最高的一种方式但此种方式仅适用于小文件对于大文件则不适合因为比较浪费内存。
2.1 直接指定文化名读取 在 Go 1.16 开始ioutil.ReadFile 就等价于 os.ReadFile二者是完全一致的。 2.1.1 os.ReadFile函数
package mainimport (fmtos
)func main() {//func ReadFile(name string) ([]byte, error) {}content, err : os.ReadFile(a.txt)if err ! nil {panic(err)}fmt.Println(string(content))
}
2.1.2 ioutil.ReadFile函数
package mainimport (io/ioutilfmt
)func main() {content, err : ioutil.ReadFile(a.txt)if err ! nil {panic(err)}fmt.Println(string(content))
}
2.2 先创建句柄再读取
2.2.1 os.OpenFile函数
package mainimport (
os
io/ioutil
fmt
)func main() {/*func Open(name string) (*File, error) {return OpenFile(name, O_RDONLY, 0)}*///Open是一个高级函数是因为它是只读模式来打开文件/*也可以直接使用 os.OpenFile只是要多加两个参数file, err : os.OpenFile(a.txt, os.O_RDONLY, 0)*/file, err : os.Open(a.txt)if err ! nil {panic(err)}//func (f *File) Close() error {}defer file.Close()//func ReadAll(r io.Reader) ([]byte, error) {}content, err : ioutil.ReadAll(file)fmt.Println(string(content))
}
2.2.2 代码解析
2.2.2.1 os.File结构体 1 2 3 type File struct { *file // os specific }
2.2.2.2 os.OpenFile函数 1 2 func OpenFile(name string, flag int, perm FileMode) ( *File, error) {}
2.2.2.3 io.Reader接口 1 2 3 type Reader interface { Read(p []byte) (n int, err error) }
3 每次只读取一行
一次性读取所有的数据太耗费内存因此可以指定每次只读取一行数据方法有三种
bufio.ReadLine()bufio.读取字节(\n)bufio.ReadString(\n) 在 bufio 的源码注释中曾说道 bufio.ReadLine()是低级库不太适合普通用户使用更推荐用户使用 bufio.ReadBytes和bufio.ReadString 去读取单行数据。 3.1 使用bufio.Reader结构体的ReadBytes方法读取字节数 ReadBytes读取直到第一次遇到delim字节返回一个包含已读取的数据和delim字节的切片。如果ReadBytes方法在读取到delim之前遇到了错误它会返回在错误之前读取的数据以及该错误一般是io.EOF。当且仅当ReadBytes方法返回的切片不以delim结尾时会返回一个非nil的错误。
