Go文件、目录、系统环境函数

go文件、目录、系统环境函数

go 获取当前运行文件目录

  • go 获取当前运行文件目录
1
2
3
   file, _ := exec.LookPath(os.Args[0])
path, _ := filepath.Abs(file)
println(path)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package main

import (
"fmt"
"log"
"os"
"path/filepath"
"strings"
)

func substr(s string, pos, length int) string {
runes := []rune(s)
l := pos + length
if l > len(runes) {
l = len(runes)
}
return string(runes[pos:l])
}

func getParentDirectory(dirctory string) string {
return substr(dirctory, 0, strings.LastIndex(dirctory, "/"))
}

func getCurrentDirectory() string {
dir, err := filepath.Abs(filepath.Dir(os.Args[0]))
if err != nil {
log.Fatal(err)
}
return strings.Replace(dir, "\\", "/", -1)
}

func main() {

var str1, str2 string
str1 = getCurrentDirectory()
fmt.Println(str1)
str2 = getParentDirectory(str1)
fmt.Println(str2)

}
  • 遍历目录文件
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    filepath.Walk("/Applications/XAMPP/htdocs/go/",
    func(path string,f os.FileInfo, err error) error {
    if (f == nil) {
    return err
    }
    if f.IsDir() {
    return nil
    }
    println(path)
    return nil
    })

go 系统环境相关函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
   fmt.Println(os.Getwd()) 	//获取当前目录	/xx/xx/readWrite <nil>
fmt.Println(os.Getegid()) //获取调用的group id 20
fmt.Println(os.Geteuid()) //用户的uid 503
fmt.Println(os.Getgid()) //调用者的gid 20
fmt.Println(os.Getenv("GOPATH")) //获取GOPATH 路径 /Applications/XAMPP/htdocs/go

fmt.Println(os.Getgroups()) ////返回的是一个[]int的切片 显示调用者属于组的一系列id [20 12 61 79 80 81 98 501 33 100 204 395 398 399] <nil>
fmt.Println(os.Getpagesize()) // //windows里边叫做虚拟内存 linux里边叫做swap 4096
fmt.Println(os.Getppid()) // //调用者的组的进程id 35139
fmt.Println(os.Getuid()) ////调用者的数字用户id 503

fmt.Println(os.Getwd()) //显示当前的目录 /Applications/XAMPP/xamppfiles/htdocs/go/readWrite <nil>
fmt.Println(os.Chdir("/Applications")) //返回<nil>正确切换目录了
fmt.Println(os.Getwd()) //切换后的目录 /Applications <nil>

fmt.Println(os.Environ()) //系统环境变量
os.Clearenv() //清空环境变量
fmt.Println(os.Environ()) //[]
//os.Exit(0) //终止进程操作
fmt.Println(os.Hostname()) //返回主机名 MacBook-Pro.local <nil>
  • 文件权限、时间修改
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    filemode, _ := os.Stat("./1.go")
    fmt.Println(filemode.Mode()) //filemode.Mode() 获取文件权限 linux -rw-r--r--

    err := os.Chmod("./1.go", 0777) //os.Chmod 改变的是文件的权限
    if err!=nil{
    fmt.Println("修改文件权限失败")
    }
    filemode, _ = os.Stat("./1.go")
    fmt.Println(filemode.Mode()) //获取权限是 -rwxrwxrwx
    os.Chtimes("./1.go", time.Now(), time.Now()) //改变文件时间
    fi, _ := os.Stat("./1.go")
    fmt.Println(fi.ModTime()) //输出时间 2017-03-30 17:34:28 +0800 CST