Go语言文件操作
2021-02-05 18:17
标签:for ret return 文件 读取 字符 file fail def 1、使用os包读取文件的内容 在方法file.Read(b)中,入口参数是一个切片,切片的长度就是每次从文件中读取数据打长度,当文件中剩余内容小于这个切片的长度的时候,就读文件的剩下的内容,而不是切片的长度那样多的内容。当文件读到最后的时候,file.Read()返回一个文件结束信息,io.EOF 2、使用bufio包读取文件内容 bufio也是一个可以用来读取文件的包 使用这种方法就是创建一个Reader变量,用来读取文件内容,Reader包含的方法包括ReadLine,ReadString等等,同样的读到文件最后会返回文件结束符io.EOF 3、使用io/ioutil包一次性读取文件内容,这个方法比较简单 它可以一次性读取文件的所有内容,而不需要使用循环来读取 Go语言文件操作 标签:for ret return 文件 读取 字符 file fail def 原文地址:https://www.cnblogs.com/gyyyl/p/12786721.html// 自定义每次读取数据长度
func ReadFileFromOS() {
file, err := os.Open("./abc")
if err != nil {
fmt.Printf("open file fail,err: %+v\n", err)
return
}
// 关闭文件
defer file.Close()
// 定义一个长度为10的切片
b := make([]byte, 10)
for {
n, err := file.Read(b)
// _, err := file.Read(b)
if err == io.EOF {
// EOF表示end of file,文件读取完毕
return
}
if err != nil {
fmt.Printf("read file fail,err: %+v\n", err)
return
}
// 打印读出的内容
// 将切片转化为string,然后打印
fmt.Printf("读取字节数:%d\n", n)
fmt.Print(string(b))
}
}
// 使用bufio包读文件
func ReadFileFromBufio() {
file, err := os.Open("./abc")
if err != nil {
fmt.Printf("open file fail,err: %+v\n", err)
return
}
// 关闭文件
defer file.Close()
newReader := bufio.NewReader(file)
for {
// 使用函数ReadString(‘\n‘)表示每次读取一个字符串,遇到‘\n‘表示读取当前字符串结束
line, err := newReader.ReadString(‘\n‘)
if err == io.EOF {
return
}
if err != nil {
fmt.Printf("read file fail,err: %+v\n", err)
}
fmt.Print(line)
}
}
// 使用io/ioutil包读取文件内容
func ReadFileFromIOutil() {
// content是一个byte类型的切片
content, err := ioutil.ReadFile("./abc")
if err != nil {
fmt.Printf("read file fail,err: %+v\b", err)
return
}
fmt.Println(string(content))
}