打开和关闭文件
os.Open()函数能够打开一个文件,返回一个*File和一个err。对得到的文件实例调用close()方法能够关闭文件。
package mainimport ("fmt""os")func main() {//打开文件f,err := os.Open("D:\\code\\gopath\\gowenjian\\go_jichu\\file")if err !=nil {fmt.Println("打开文件失败")return}else {//关闭文件f.Close()}}
读取文件
bufio读取文件
package mainimport ("bufio""fmt""io""os")func main() {f,err := os.Open("D:\\code\\gopath\\gowenjian\\go_jichu\\day3\\file\\a.txt")if err !=nil {fmt.Println("打开文件失败")return}reader := bufio.NewReader(f)for {line,err := reader.ReadString('\n')if err == io.EOF {fmt.Print(line)fmt.Println("读取文件w完毕")return}if err != nil {fmt.Println("读取文件失败")return}fmt.Print(line)}}
ioutil读取整个文件
package mainimport ("fmt""io/ioutil")func main() {reader,err := ioutil.ReadFile("D:\\code\\gopath\\gowenjian\\go_jichu\\day3\\file\\a.txt")if err !=nil {fmt.Println("打开文件失败")return}fmt.Println(string(reader))}
文件写入操作
os.OpenFile()函数能够以指定模式打开文件,从而实现文件写入相关功能。
func OpenFile(name string, flag int, perm FileMode) (*File, error) {...}
其中:
name:要打开的文件名 flag:打开文件的模式。 模式有以下几种:
| 模式 | 含义 |
|---|---|
| os.O_WRONLY | 只写 |
| os.O_CREATE | 创建文件 |
| os.O_RDONLY | 只读 |
| os.O_RDWR | 读写 |
| os.O_TRUNC | 清空 |
| os.O_APPEND | 追加 |
perm:文件权限,一个八进制数。r(读)04,w(写)02,x(执行)01。
Write和WriteString
package mainimport ("fmt""os")func main() {f,err := os.OpenFile("D:\\code\\gopath\\gowenjian\\go_jichu\\day3\\file\\b.txt",os.O_CREATE|os.O_APPEND,0755)if err != nil {fmt.Println("open file failed",err)return}defer f.Close()str := "1111"f.Write([]byte(str)) //写入字节切片数据f.WriteString(str) //直接写入字符串数据}
bufio.NewWriter
package mainimport ("bufio""fmt""os")func main() {f,err := os.OpenFile("D:\\code\\gopath\\gowenjian\\go_jichu\\day3\\file\\b.txt",os.O_CREATE|os.O_APPEND,0755)if err != nil {fmt.Println("open file failed",err)return}defer f.Close()w := bufio.NewWriter(f)for i:=0 ; i<10 ; i++ {w.WriteString("hello") //将数据先写入缓存}w.Flush() //将缓存中的内容写入文件}
ioutil.WriteFile
func main() {str := "hello 沙河"err := ioutil.WriteFile("./xx.txt", []byte(str), 0666)if err != nil {fmt.Println("write file failed, err:", err)return}}
