# Go 文件操作 os.File 封装了所有文件相关的操作,File 是一个结构体,有很多方法。 ## 1.os 包 ### 1.1.创建文件 ```go func Create(name string) (file *File, err error) func NewFile(fd uintptr, name string) *File ``` Create 方法示例如下: ```go f,err := os.Create(fileName) defer f.Close() if err !=nil { fmt.Println(err.Error()) } else { _,err=f.Write([]byte("要写入的文本内容")) checkErr(err) } ``` ### 1.2.打开文件 ```go func Open(name string) (*File, error) func OpenFile(name string, flag int, perm FileMode) (*File, error) ``` perm 模式如下: ```go //打开方式 const ( //只读模式 O_RDONLY int = syscall.O_RDONLY // open the file read-only. //只写模式 O_WRONLY int = syscall.O_WRONLY // open the file write-only. //可读可写 O_RDWR int = syscall.O_RDWR // open the file read-write. //追加内容 O_APPEND int = syscall.O_APPEND // append data to the file when writing. //创建文件,如果文件不存在 O_CREATE int = syscall.O_CREAT // create a new file if none exists. //与创建文件一同使用,文件必须存在 O_EXCL int = syscall.O_EXCL // used with O_CREATE, file must not exist //打开一个同步的文件流 O_SYNC int = syscall.O_SYNC // open for synchronous I/O. //如果可能,打开时缩短文件 O_TRUNC int = syscall.O_TRUNC // if possible, truncate file when opened. ) ``` ### 1.3.获取文件状态 ```go func (f *File) Stat() (fi FileInfo, err error) ``` ### 1.4.读取文件 ```go func (f *File) Read(b []byte) (n int, err error) ``` ### 1.5.写入文件 ```go func (f *File) Write(b []byte) (n int, err error) ``` ## 2.ioutil 包 ### 2.1.读取 示例如下: ```go package main import( "io/ioutil" "fmt" ) func main(){ b,err := ioutil.ReadFile("C:/example.txt") if err != nil{ fmt.Println(err) } fmt.Println(b) fmt.Println(string(b)) } ``` ### 2.2.写入 示例如下: ```go package main import( "io/ioutil" "fmt" ) func main(){ str := []byte("Hello,Go!") err := ioutil.WriteFile("C:/example.txt", str, 0644) if err != nil{ panic(err) }else{ fmt.Println("WriteFile Success!") } } ``` ## 3.bufio 包 ### 3.1.读文件 ```go func NewReader(rd io.Reader) *Reader func (b *Reader) Read(p []byte) (n int, err error) func (b *Reader) ReadLine() (line []byte, isPrefix bool, err error) ``` ### 3.2.写文件 ```go func NewWriter(w io.Writer) *Writer func (b *Writer) Write(p []byte) (nn int, err error) ```