一: 相关的API
1func Create(name string) (file *File, err Error) 根据提供的文件名创建新的文件,返回一个文件对象,默认权限是0666 2 func NewFile(fd uintptr, name string) *File 根据文件描述符创建相应的文件,返回一个文件对象 3 func Open(name string) (file *File, err Error) 只读方式打开一个名称为name的文件 4 func OpenFile(name string, flag int, perm uint32) (file *File, err Error) 打开名称为name的文件,flag是打开的方式,只读、读写等,perm是权限 5 func (file *File) Write(b []byte) (n int, err Error) 写入byte类型的信息到文件 6 func (file *File) WriteAt(b []byte, off int64) (n int, err Error) 在指定位置开始写入byte类型的信息 7 func (file *File) WriteString(s string) (ret int, err Error) 写入string信息到文件 8 func (file *File) Read(b []byte) (n int, err Error) 读取数据到b中 9 func (file *File) ReadAt(b []byte, off int64) (n int, err Error) 从off开始读取数据到b中 10 func Remove(name string) Error 删除文件名为name的文件
二: 写文件
package main import ( "os" "fmt" ) func main() { //新建文件 file, err := os.Create("./xxx.txt") if err != nil { fmt.Println(err) return } defer file.Close() //写入内容 for i := 0; i < 5; i++ { //写入信息 file.WriteString("ab ") file.Write([]byte("cd ")) } }
三:读文件
package main import ( "os" "fmt" ) func main() { //打开文件 file, err := os.Open("./xxx.txt") if err != nil { fmt.Println(err) } defer file.Close() buf := make([]byte, 1024) for { //读文件 n, _ := file.Read(buf) if n == 0 { break } fmt.Println(string(buf)) } }
四:拷贝文件
package main import ( "os" "fmt" "io" ) func main() { //打开文件 srcFile, err := os.Open("./xxx.txt") if err != nil { fmt.Println(err) return } //创建目标文件 dstFile, err2 := os.Create("./yyy.txt") if err2 != nil { fmt.Println(err2) return } //切片缓冲区 buf := make([]byte, 1024) for { //从源文件读 n, err := srcFile.Read(buf) //Read()若无法得到更多的结果,就返回EOF if err != nil && err != io.EOF { fmt.Println(err) break } if n == 0 { fmt.Println("文件处理完毕") break } //读到的内容写入目标文件 dstFile.Write(buf[:n]) } srcFile.Close() dstFile.Close() }