【go语言】仅用os库读写文件
专栏:web开发笔记 April 18, 2025, 6:35 p.m. 37 阅读
go语言读写文件有好几种库,网上文章比较乱,混用了几个库。今天仅用os库来读写文件试试。

go语言读写文件有好几种库,网上文章比较乱,混用了几个库。今天仅用os库来读写文件试试。

写文件

首先,用os.OpenFile()来打开文件,得到文件句柄*File。再用f.Write([]byte)f.WriteString(string)来写入字符串。最后关闭文件f.Close()

package main

import (
	"os"
	"fmt"
)

func main(){
	f, err := os.OpenFile("test.txt", os.O_CREATE|os.O_WRONLY, 0644)
	if err != nil {
		fmt.Print(err)
	}

	f.Write([]byte("Hello\n"))
	f.WriteString("abc123\n123456\n")
	
	f.Close()
}

运行后,输出内容如下:

> cat test.txt 
Hello
abc123
123456

读文件

首先,用os.OpenFile()来打开文件,得到文件句柄*File。创建10个byte的buf,用f.Read(buf)读文件,循环读,每次读10个字节,直到返回读出字节数n = 0,表明已到文件末尾。拼接读出来的字符串到content里。最后关闭文件f.Close()

package main

import (
	"os"
	"fmt"
)

func main(){
	
	f, err := os.OpenFile("test.txt", os.O_RDONLY, 0)
       if err != nil {
		fmt.Print(err)
	}
	
	var content []byte
	
	for {
		buf := make([]byte, 10)
		n , err2 := f.Read(buf)
		
		if n > 0 {
			fmt.Print(buf, " ", "n=", n, "\n")
			content = append(content, buf[:n]...)
		}else{
			fmt.Printf("Err: %s\n", err2)
			break
		}
	}
	
	fmt.Print(content)
	
	f.Close()
	
}

运行结果如下:

[72 101 108 108 111 10 97 98 99 49] n=10
[50 51 10 49 50 51 52 53 54 10] n=10
Err: EOF
[72 101 108 108 111 10 97 98 99 49 50 51 10 49 50 51 52 53 54 10]

参考资料:

 

感谢阅读,更多文章点击这里:【专栏:web开发笔记】
最新20篇 开设专栏