os包下面有OpenFile函数:在这里插入图片描述

案例1:创建一个新文件,写入5句 :hello,Go语言

package mainimport ("fmt""os""bufio"
)func main() {//创建一个新文件,写入内容 5句 hello,Go语言filePath := "c:/amyfile/abc.txt"file, err := os.OpenFile(filePath, os.O_WRONLY | os.O_CREATE, 0666)if err != nil{fmt.Println("open file err",err)}//及时关闭file句柄defer file.Close()//写入文件时,使用带缓存的 *Writerwrite := bufio.NewWriter(file)for i := 0; i < 5; i++ {write.WriteString("hello,Go语言 \n")}//Flush将缓存的文件真正写入到文件中write.Flush()
}

执行之后,可以看出文件已被写入:
在这里插入图片描述

案例2:打开一个存在的文件,在原来的内容追加内容:ABC!!

package mainimport ("fmt""os""bufio"
)func main() {//创建一个新文件,写入内容 5句 hello,Go语言filePath := "c:/amyfile/abc.txt"file, err := os.OpenFile(filePath, os.O_WRONLY | os.O_APPEND, 0666)if err != nil{fmt.Println("open file err",err)}//及时关闭file句柄defer file.Close()//写入文件时,使用带缓存的 *Writerwrite := bufio.NewWriter(file)for i := 0; i < 5; i++ {write.WriteString("ABC! \r\n")}//Flush将缓存的文件真正写入到文件中write.Flush()
}

执行,发现内容追加成功:
在这里插入图片描述

案例3:打开一个存在的文件,将原来的内容读出来,显示在终端,并且追加5句:hello,北京。

package mainimport ("fmt""os""bufio""io"
)func main() {//创建一个新文件,写入内容 5句 hello,Go语言filePath := "c:/amyfile/abc.txt"file, err := os.OpenFile(filePath, os.O_RDWR | os.O_APPEND, 0666)if err != nil{fmt.Println("open file err",err)}//及时关闭file句柄defer file.Close()//读原来文件的内容,并且显示在终端reader := bufio.NewReader(file)for {str, err := reader.ReadString('\n')if err == io.EOF {break}fmt.Print(str)}//写入文件时,使用带缓存的 *Writerwrite := bufio.NewWriter(file)for i := 0; i < 5; i++ {write.WriteString("hello,北京。 \r\n")}//Flush将缓存的文件真正写入到文件中write.Flush()
}

执行,原来的文件在控制台读取成功,并且在文件中追加成功:
在这里插入图片描述

案例4:编写一个程序,将一个文件的内容复制到另外一个文件(注:这两个文件都已存在)

package mainimport ("fmt""io/ioutil"
)func main() {//创建一个新文件,写入内容 5句 hello,Go语言file1Path := "c:/amyfile/abc.txt"file2Path := "c:/amyfile/defer.txt"data, err := ioutil.ReadFile(file1Path)if err != nil{fmt.Printf("open file err=%v\n",err)return}err = ioutil.WriteFile(file2Path, data,0666)if err != nil{fmt.Printf("open file err=%v\n",err)}
}

执行,发现内容复制成功:
在这里插入图片描述