天天看點

7.Go-使用者資訊和系統檔案/目錄

7.1.擷取作業系統使用者資訊

(1)os包及子包功能

  • os/exec包,負責執行外部指令
  • os/singal對輸入資訊的通路
  • os/user通過名次或ID 查詢使用者賬号

(2)在os/user中提供了User結構體,表示作業系統使用者

  • Uid使用者id
  • Gid所屬組id
  • Username使用者名
  • Name所屬組名
  • HomeDir使用者對應檔案夾路勁

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

  • 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語言标準庫中提供了兩種建立檔案夾的方式

MkDir:要求檔案夾不存在且父目錄必須存在,才能建立

//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:如果檔案夾已經存在,不報錯,保留原檔案,如果父目錄不存在幫助建立

//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)建立空檔案

建立檔案是要求檔案目錄必須已經存在

如果檔案已經存在,則會建立一個空檔案覆寫之前的檔案

//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)重命名檔案或檔案夾

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

    第二個參數:新檔案夾名稱

//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("删除成功")
}

//結果
删除成功           

複制