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