Go
操作文本文件时,与其它语言一样也有新建文件、打开文件、写文件、读文件、删除文件等操作。主要有两个标准库来提供这些操作,分别为os
和ioutil
。在该文中我们介绍os
模块。
1. 新建文件
func Create(name string) (file *File, err Error)//返回 File 的内存地址, 错误信息;通过 os 库调用
func NewFile(fdint, name string) *File//返回文件的内存地址, 通过 os 库调用
2. 打开文件
func Open(namestring) (file *File, err Error)//返回 File 的内存地址, 错误信息;通过 os 库调用
func OpenFile(name string, flagint, perm unit32) (file *File, err Error)//返回 File 的内存地址, 错误信息, 通过 os 库调用
3. 写入文件
//写入一个 slice, 返回写的个数, 错误信息, 通过 File 的内存地址调用func (file*File).Write(b []byte) (n int, err Error)
//从 slice 的某个位置开始写入, 返回写的个数, 错误信息,通过 File 的内存地址调用func (file*File).WriteAt(b []byte, off int64) (n int, err Error)
//写入一个字符串, 返回写的个数, 错误信息, 通过 File 的内存地址调用func (file*File).WriteString(s string) (ret int, err Error)
4. 读取文件
//读取一个 slice, 返回读的个数, 错误信息, 通过 File 的内存地址调用func (file*File).Read(b []byte) (n int, err Error)
//从 slice 的某个位置开始读取, 返回读到的个数, 错误信息, 通过 File 的内存地址调用func (file*File).ReadAt(b[]byte, offint64) (n int, err Error)
4. 删除文件
//传入文件的路径来删除文件,返回错误个数func Remove(name string)Error
5. 关闭文件
func (f *File) Close() error
6. 使用示例
package mainimport ("fmt""os")func main() {fileName := "/home/wohu/gocode/src/test.txt"writeFile(fileName)readFile(fileName)}func writeFile(fileName string) {file, err := os.Create(fileName)if err != nil {fmt.Println(err)return}for i := 0; i <= 5; i++ {outStr := fmt.Sprintf("%s:%d\n", "hello, world", i)file.WriteString(outStr)file.Write([]byte("abcd\n"))}file.Close()}func readFile(fileName string) {file, err := os.Open(fileName)if err != nil {fmt.Println(err)return}defer file.Close()buf := make([]byte, 1024)for {n, _ := file.Read(buf)if n == 0 {//0表示到达EOFbreak}os.Stdout.Write(buf)}}
输出结果:
wohu@wohu:~/gocode/src$hello.go test.txtwohu@wohu:~/gocode/src$ cat test.txt hello, world:0abcdhello, world:1abcdhello, world:2abcdhello, world:3abcdhello, world:4abcdhello, world:5abcdwohu@wohu:~/gocode/src$