文件是什么?
计算机中的文件是存储在外部介质(通常是磁盘)上的数据集合,文件分为文本文件和二进制文件。
打开和关闭文件
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。