去语言碎片整理之文件操作

  

文件是什么?
计算机中的文件是存储在外部介质(通常是磁盘)上的数据集合,文件分为文本文件和二进制文件。

  

打开和关闭文件

  

os.Open()函数能够打开一个文件,返回一个*文件和一个错误。对得到的文件实例调用关闭()方法能够关闭文件。

  
 <代码>函数main () {
  文件,犯错:=os.Open (“。/main.go”)
  如果犯错!=nil {
  fmt。Println(打开文件失败!,犯错,犯错)
  返回
  }
  fmt.Println(“酷!”)
  file.Close ()
  } 
  

为了防止文件忘记关闭,我们通常使用推迟注册文件关闭语句。

  

读取文件

  

以()   

基本使用

  

读的方法定义如下:
<代码> func (f *文件)读取(b[]字节)(n int,犯错错误)
它接收一个字节切片,返回读取的字节数和可能的具体错误,读到文件末尾时会返回0和io.EOF。

  
 <代码>包主要
  导入(
  “fmt”
  “操作系统”
  “输入输出”
  )
  函数main () {
  文件,犯错:=os.Open (“。/main.go”)
  如果犯错!=nil {
  fmt。Println(“打开文件失败!犯错,犯错)
  返回
  }
  推迟file.Close ()
  var tmp=使([]字节,128)
  n,犯错:=以(tmp)
  如果做错了==OF {
  fmt.Println(“文件读完了”)
  返回
  }
  如果犯错!=nil {
  fmt。Println(读文件失败、犯错,犯错)
  返回
  }
  fmt.Printf(“读取了% d的字节数据\ n, n)
  fmt.Println (string (tmp [: n]))
  } 
  

循环读取

  

使用的循环读取文件中的所有数据。

  
 <代码>包主要
  导入(
  “fmt”
  “操作系统”
  “输入输出”
  )
  函数main () {
  文件,犯错:=os.Open (“。/main.go”)
  如果犯错!=nil {
  fmt。Println(“打开文件失败!犯错,犯错)
  返回
  }
  推迟file.Close ()
  var[]字节的内容
  var tmp=使([]字节,128)
  为{
  n,犯错:=以(tmp)
  如果做错了==io.EOF {
  fmt.Println(“文件读完了”)
  打破
  }
  如果犯错!=nil {
  fmt。Println(读文件失败、犯错,犯错)
  返回
  }
  内容=append(内容、tmp [: n]…)
  
  }
  fmt.Println (string(内容)
  } 
  

bufio读取文件

  

bufio是在文件的基础上封装了一层API,支持更多的功能。

  
 <代码>包主要
  导入(
  “fmt”
  “操作系统”
  “输入输出”
  “bufio”
  )
  函数main () {
  文件,犯错:=os.Open (“。/main.go”)
  如果犯错!=nil {
  fmt。Println(打开文件失败,犯错,犯错)
  返回
  }
  推迟file.Close ()
  读者:=bufio.NewReader(文件)
  为{
  线,犯错:=reader.ReadString (“\ n”)
  如果做错了==io.EOF {
  fmt.Println(“文件读完了”)
  打破
  }
  如果犯错!=nil {
  fmt。Println(读取文件失败!呃,呃)
  返回
  }
  fmt.Println(线)
  }
  } 
  
使用ioutil读取整个文件
  

io/ioutil包的ReadFile方法能够读取完整的文件,只需要将文件名作为参数传入。

  
 <代码>包主要
  导入(
  “fmt”
  “io/ioutil”
  )
  函数main () {
  内容,犯错:=ioutil.ReadFile (“。/main.go”)
  如果犯错!=nil {
  fmt。Println(“读文件失败、犯错:“犯错)
  返回
  
  }
  fmt.Println (string(内容)
  } 
  

文件写入操作

  

os.OpenFile()函数能够以指定的模式打开文件,从而实现文件写入相关功能。

  
 <代码> func OpenFile(名称字符串,国旗int,烫FileMode)(*文件,错误){
  …
  } 
  

其中:
名称是指要打开的文件名,标志是指打开文件的模式,模式有以下几种:

  

坝镅运槠碇募僮鳌?烫文件权限,一个八进制数r(读)04 w(写)02,x(执行)01。

  
写和WriteString h5> <代码>函数main () {   文件,犯错:=os.OpenFile (“xx。txt”, os.O_CREATE | os.O_TRUNC |操作系统。O_WRONLY, 0666)   如果犯错!=nil {   fmt。Println(“打开文件失败,错:“犯错)   返回   }   推迟file.Close ()   str:="你好沙河”   file.Write([]字节(str))//写入字节切片数据   文件。WriteString(“你好小王子”)//直接写入字符串数据   }

去语言碎片整理之文件操作