os,系統包。
一、環境變量
1.獲取所有環境變量, 返回變量列表:os.Environ()
envs := os.Environ() for _, env := range envs { cache := strings.Split(env, "=") fmt.Println(cache) //[USER root]、[HOSTNAME localhost.localdomain] }
2.獲取指定環境變量:os.Getenv()
fmt.Println(os.Getenv("GOPATH"))
3.設置環境變量:
os.Setenv
if err := os.Setenv("GOPATH", "./GO/bin"); err != nil { fmt.Println(err) }
4.獲取主機名稱
fmt.Println(os.Hostname())
二、退出系統
os.Exit(code int)
三、文件內容操作
注意:如果新建文件、打開文件等文件操作,文件名稱沒有帶路徑,則需要線進入指定目錄
// 進入桌面目錄 os.Chdir("/Users/xujie/Desktop")
1.新建文件:os.Create(文件名稱)
file,error := os.Create("file.txt") if error != nil{ fmt.Println(error) }
2.打開文件:文件對象=os.Open(文件名稱,打開模式,權限)
file,error:= os.Open("file.txt") if error != nil { fmt.Println(error) }
第二個參數
O_RDONLY 打開只讀文件
O_WRONLY 打開只寫文件
O_RDWR 打開既可以讀取又可以寫入文件
O_APPEND 寫入文件時將數據追加到文件尾部
O_CREATE 如果文件不存在,則創建一個新的文件
O_EXCL 文件必須不存在,然后會創建一個新的文件
O_SYNC 打開同步I/0
O_TRUNC 文件打開時可以截斷
第三個參數,如0666
3.寫入文件:文件對象.Write(...),文件對象.WriteAt(...),文件對象.WriteString(string)
func (f *File) Write(b []byte) (n int, err error) func (f *File) WriteAt(b []byte, off int64) (n int, err error) func (f *File) WriteString(s string) (n int, err error)
func main() { // 進入桌面目錄 os.Chdir("/Users/xujie/Desktop") // 創建一個文件夾 file,error:= os.OpenFile("file.txt",os.O_RDWR,0666) defer file.Close() if error != nil { fmt.Println(error) } _,error = file.WriteString("你好") _,error = file.WriteString("從天有一個書") fmt.Println(error) }
上面完成了文件的寫入,我們發現文件原來的內容已經被替換掉了。
如果我們只想向文件中追加部分內容該如何實現?
func main() { // 進入桌面目錄 os.Chdir("/Users/xujie/Desktop") // 創建一個文件夾 file,error:= os.OpenFile("file.txt",os.O_RDWR|os.O_APPEND,0666) defer file.Close() if error != nil { fmt.Println(error) } _,error = file.WriteString("\n---酷走天涯") fmt.Println(error) }
4.讀取文件:文件對象.Read(data)
func main() { // 進入桌面目錄 os.Chdir("/Users/xujie/Desktop") file,error:= os.Open("file.txt") defer file.Close() if error != nil { fmt.Println(error) return } fileInfo,_ := file.Stat() fmt.Println(fileInfo.Size()) // 創建緩沖區 data := make([]byte,fileInfo.Size()) // 一次性讀取所有內容到緩沖區中 _,error = file.Read(data) fmt.Println(error) fmt.Println(string(data)) }
那么如何多次讀取文件里面的內容呢
func main() { // 進入桌面目錄 os.Chdir("/Users/xujie/Desktop") file,error:= os.Open("file.txt") defer file.Close() if error != nil { fmt.Println(error) return } fileInfo,_ := file.Stat() fmt.Println(fileInfo.Size()) // 創建緩沖區 var max = 3 var offset int64 = 0 data := make([]byte,max) // 多次讀取緩沖區內容 for { _,error = file.ReadAt(data,offset) if error != nil { fmt.Println(error) break; } offset += 3 fmt.Println(string(data)) }
5.關閉文件:文件對象.Close()
6.刪除文件或文件夾
error := os.Remove("/Users/xujie/Desktop/file.txt")
四、文件狀態等操作
1.修改文件權限:文件對象.Chmod(權限)
func main() { file,_:= os.OpenFile("/Users/xujie/Desktop/file.txt",os.O_RDWR|os.O_APPEND,777) fileInfo,_ := file.Stat() fmt.Println(fileInfo.Mode()) err := file.Chmod(0444) if err != nil{ fmt.Println(err) } fileInfo,_ = file.Stat() fmt.Println(fileInfo.Mode()) }
2.獲取文件的狀態:os.Stat(文件名稱).Name()....IsDir()....Mode()
func main() { filename := "/Users/xujie/Desktop/file.txt" file,_:=os.Stat(filename) fmt.Println(file.Name()) fmt.Println(file.IsDir()) fmt.Println(file.Size()) fmt.Println(file.Mode()) fmt.Println(file.Sys()) }
3.錯誤檢測
func IsExist(err error) bool // 文件存在,但是由系統產生錯誤 func IsNotExist(err error) bool // 目錄或者文件不存在時返回true func IsPermission(err error)bool // 檢測是不是由於權限不足導致的錯誤
func main() { filename := "file.txt" _, err := os.Stat(filename); fmt.Println(os.IsExist(err)) fmt.Println(os.IsNotExist(err)) }
package main import ( "os" "fmt" ) func main() { os.Chdir("/Users/xujie/Desktop") file,error := os.OpenFile("file.txt",os.O_RDWR,0444) if error != nil { fmt.Println(os.IsPermission(error)) fmt.Println(os.IsPermission(error)) return } _,error = file.WriteString("neirong") if error != nil { fmt.Println(error) fmt.Println(os.IsPermission(error)) } }
4.修改文件夾或者文件的名稱
移動文件夾或者文件
檢測文件是否是同一個
獲取文件模式相關信息
查看文件名稱
如何查看所有文件夾下的所有文件和文件數量
獲取文件對應的unix文件描述符
- 48.設置文件的讀寫位置
- 49.修改文件權限
-
- 44.創建軟鏈接
- 45.獲取軟鏈接文件對應的實際文件路徑地址
- 46.更改指定文件的訪問和修改時間
-
- 33.強制改變文件大小
- 34.硬鏈接
- 35.同步保存當前文件的內容
- 36.NewFile使用給出的Unix文件描述符和名稱創建一個文件
- 37.Lstat返回一個描述name指定的文件對象的FileInfo
- 40.獲取當前程序可執行的文件地址
獲取當前目錄
修改當前目錄
創建文件夾
刪除文件夾或者文件
修改文件夾或者文件的名稱
移動文件夾或者文件
把文件所在的目錄切換為當前目錄
獲取臨時目錄的文件夾路徑
讀取文件夾的下面文件的名稱
47.創建文件夾,並設置權限
獲取用戶uid 和 群組gid
查看用戶所屬組的列表
獲取調用者有效的用戶標識
.Chown修改文件的用戶ID和組ID
.獲取當前進程id 和其父進程id
通過pid查找進行進程
- 53.啟動一個進程
- 54.殺死進程
- 55.釋放與進行p關聯的任何資源
- 11.錯誤檢測
- 25.
- 26.
- 27.
- 28.
- 29.判斷字符是否是支持的路徑分割符
- 31.
- 32
- 42.讓程序已給定的狀態碼退出
- 50.管道的用法
- 51.創建系統錯誤