7.Go-用戶信息和系統文件/目錄

7.1.獲取操做系統用戶信息

(1)os包及子包功能spa

  • os/exec包,負責執行外部命令
  • os/singal對輸入信息的訪問
  • os/user經過名次或ID 查詢用戶帳號

(2)在os/user中提供了User結構體,表示操做系統用戶操作系統

  • Uid用戶id
  • Gid所屬組id
  • Username用戶名
  • Name所屬組名
  • HomeDir用戶對應文件夾路勁

(3)在os/user中的Group表示用戶所屬組blog

  • Gid組的id
  • Name組的名稱
//Learn_Go/main.go
package main

import (
	"fmt"
	"os/user"
)

func main() {
	u,error := user.Current()   //獲取當前用戶
	if error != nil{
		fmt.Println(error)
		return
	}
	fmt.Println(u.Uid)
	fmt.Println(u.Name)
	fmt.Println(u.Gid)
	fmt.Println(u.HomeDir)
	fmt.Println(u.Username)
}

7.2.系統文件和目錄

(1)Go語言標準庫中提供了兩種建立文件夾的方式rem

MkDir:要求文件夾不存在且父目錄必須存在,才能建立class

//Learn_Go/main.go
package main

import (
	"fmt"
	"os"
)

func main() {
	err := os.Mkdir("D:/godir", os.ModeDir)
	if err != nil{
		fmt.Println("文件夾建立失敗", err)
		return
	}
	fmt.Println("文件夾建立成功")
}

 MkDirAll:若是文件夾已經存在,不報錯,保留原文件,若是父目錄不存在幫助建立test

//Learn_Go/main.go
package main

import (
	"fmt"
	"os"
)

func main() {
	err := os.MkdirAll("D:/godir/a/b", os.ModeDir)
	if err != nil{
		fmt.Println("文件夾建立失敗", err)
		return
	}
	fmt.Println("文件夾建立成功")
}

 (2)建立空文件import

建立文件是要求文件目錄必須已經存在file

若是文件已經存在,則會建立一個空文件覆蓋以前的文件im

//Learn_Go/main.go
package main

import (
	"fmt"
	"os"
)

func main() {
	f , err := os.Create("D:/godir/test.txt")
	if err != nil{
		fmt.Println("文件夾建立失敗", err)
		return
	}
	fmt.Println("文件夾建立成功", f)
}

 (3)重命名文件或文件夾error

 第一個參數:原文件名稱,要求此路徑是必須存在的

    第二個參數:新文件夾名稱

//Learn_Go/main.go
package main

import (
	"fmt"
	"os"
)

func main() {
	err := os.Rename("D:/godir","D:/godir11")
	if err != nil{
		fmt.Println("重命名失敗", err)
		return
	}
	fmt.Println("重命名成功")
}

 重命名文件

//Learn_Go/main.go
package main

import (
	"fmt"
	"os"
)

func main() {
	err := os.Rename("D:/godir11/test.txt","D:/godir11/test11.txt")
	if err != nil{
		fmt.Println("重命名失敗", err)
		return
	}
	fmt.Println("重命名成功")
}

 (4)獲取文件夾信息

//Learn_Go/main.go
package main

import (
	"fmt"
	"os"
)

func main() {
	f,err := os.Open("D:/godir11/test11.txt")
	if err != nil{
		fmt.Println("文件獲取失敗", err)
		return
	}
	fileInfo,err := f.Stat()
	if err != nil{
		fmt.Println("文件信息獲取失敗",err)
		return
	}
	fmt.Println(fileInfo.Size())          //文件大小
	fmt.Println(fileInfo.ModTime())      //文件最後修改時間
	fmt.Println(fileInfo.Mode())         //文件模式    -rw-rw-rw-
	fmt.Println(fileInfo.IsDir())         //是不是目錄    false
	fmt.Println(fileInfo.Name())         //文件名       test11.txt
}

  (5)刪除文件或文件夾

Remove:刪除的內容只能是一個文件或空文件夾且必須存在

//Learn_Go/main.go
package main

import (
	"fmt"
	"os"
)

func main() {
	err := os.Remove("D:/godir11")
	if err != nil{
		fmt.Println("刪除失敗", err)
		return
	}
	fmt.Println("刪除成功")
}

//結果
刪除失敗 remove D:/godir11: The directory is not empty.

RemoveAll

  • 只要文件夾存在,刪除文件夾
  • 不管文件是否有內容都會刪除
  • 若是是文件則刪除文件
//Learn_Go/main.go
package main

import (
	"fmt"
	"os"
)

func main() {
	err := os.RemoveAll("D:/godir11")
	if err != nil{
		fmt.Println("刪除失敗", err)
		return
	}
	fmt.Println("刪除成功")
}

//結果
刪除成功
相關文章
相關標籤/搜索