Go 語言的文件操作
本文主要介紹 Go 語言中對文件系統(tǒng)的操作,Go 語言內置庫中提供了豐富的文件操作函數(shù),所以本文主要介紹使用Go 語言中的內置包——“os” 來實現(xiàn)文件操作。
1. 文件創(chuàng)建/打開
若你想創(chuàng)建/打開一個文件,則可以使用
代碼塊
- 1?
func OpenFile(name string, flag int, perm uint32) (file *File, err Error)
參數(shù)解釋:
- name:就是文件名,若文件不在執(zhí)行程序目錄下,則可以使用文件的相對路徑或者絕對路徑。
- flag:是文件打開模式,其支持模式共有(O_RDONLY|O_WRONLY|O_RDWR三個中必須要選一個):
-
- O_RDONLY:以只讀方式打開文件;
- O_WRONLY:以只寫方式打開文件;
- O_RDWR:以讀寫方式打開文件;
- O_APPEND:寫入時將數(shù)據(jù)追加到文件;
- O_CREATE:如果不存在新文件,則創(chuàng)建一個新文件;
- O_EXCL:與O_CREATE一起使用,文件不能存在;
- O_SYNC:為同步I/O打開;
- O_TRUNC:打開時截斷常規(guī)可寫文件;
- perm:文件權限,一般最高為0777。
代碼示例
代碼塊
- 1?
package main
- 2
- 3?
import (
- 4? ? ? ? ?
"fmt"
- 5? ? ? ? ?
"os"
- 6?
)
- 7
- 8?
func main() {
- 9? ? ? ? ?
f, err := os.OpenFile("a.txt", os.O_RDWR|os.O_CREATE, 0777)
- 10? ? ? ?
if err != nil {
- 11? ? ? ? ? ? ? ?
panic(err)
- 12? ? ? ?
}
- 13? ? ? ?
fmt.Println(f.Name())
- 14?
}
- 第 9 行:以讀寫的方式打開一個名為a.txt的文件,若文件不存在則創(chuàng)建這個文件,文件權限為0777;
- 第 13 行:打印這個文件名;
執(zhí)行結果:
2. 文件讀取
文件打開之后,就可以從得到的文件對象中讀取文件內容。我們在 a.txt 文件中輸入?file test
?字符串,來驗證讀取結果。
代碼示例:
代碼塊
- 1?
package main
- 2
- 3?
import (
- 4? ? ? ? ?
"fmt"
- 5? ? ? ? ?
"os"
- 6?
)
- 7
- 8?
func main() {
- 9? ? ? ? ?
f, err := os.OpenFile("a.txt", os.O_RDWR|os.O_CREATE, 0777)
- 10? ? ? ?
if err != nil {
- 11? ? ? ? ? ? ? ?
panic(err)
- 12? ? ? ??
}
- 13? ? ? ?
b := make([]byte, 10) //最大讀取字符數(shù)量
- 14? ? ? ?
i, err := f.Read(b)
- 15? ? ? ?
if err != nil {
- 16? ? ? ? ? ? ? ?
panic(err)
- 17? ? ? ?
}
- 18? ? ? ?
fmt.Println(i) //輸出讀取的字符串的個數(shù)
- 19? ? ? ?
fmt.Println(string(b)) //輸出讀取到的字符串
- 20?
}
執(zhí)行結果:
3. 文件寫入
文件寫入有兩種模式,追加模式和覆寫模式。如果在打開文件的時候加上了?O_APPEND 模式,就是追加,如果不加就是覆寫。
代碼示例:
代碼塊
- 1?
package main
- 2
- 3?
import (
- 4? ? ? ? ?
"os"
- 5?
)
- 6
- 7?
func main() {
- 8? ? ? ? ?
f1, err := os.OpenFile("a.txt", os.O_RDWR|os.O_CREATE, 0777)
- 9? ? ? ? ?
if err != nil {
- 10? ? ? ? ? ? ? ? ?
panic(err)
- 11? ? ? ?
}
- 12? ? ? ?
f1.WriteString("覆寫字符")
- 13? ? ? ?
f1.Close()
- 14
- 15? ? ? ?
f2, err := os.OpenFile("b.txt", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0777)//追加模式打開文件
- 16? ? ? ?
if err != nil {
- 17? ? ? ? ? ? ? ? ?
panic(err)
- 18? ? ? ?
}
- 19? ? ? ?
f2.WriteString("追加字符")
- 20?
}
反復執(zhí)行幾遍上述代碼,然后打開兩個文件,文件內容如下:
覆寫的文件中只有"覆寫字符"這四個字,因為其寫入被不斷覆寫了。
追加的文件中有很多"追加字符",因為其寫入是不斷的被追加到文件末尾的。
4. 小結
本文主要介紹了 Go 語言中自帶的 os 包的文件操作,需要注意的是文件的打開中若不確定文件是否存在,就可以加上 O_CREATE。改寫文件若是需要追加到文件末尾,記得在打開文件的時候要加上 O_APPEND。
上一節(jié)
文章來源于網絡,侵刪!