Go os包

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
package mainimport (    "fmt"    "io/ioutil"    "os"    "reflect"    "time")func main() {    dir, _ := os.Getwd()    fmt.Println("dir:", dir)    err := os.Chdir("d:/project/test2")    dir, _ = os.Getwd()    fmt.Println("dir:", dir)    //參數不區分大小寫    //不存在環境變數就返回Null 字元串 len(path) = 0    path := os.Getenv("gopath")    fmt.Println(path)    //返回有效group id    egid := os.Getegid()    fmt.Println("egid:", egid)    //返回有效UID    euid := os.Geteuid()    fmt.Println("euid:", euid)    gid := os.Getgid()    fmt.Println("gid:", gid)    uid := os.Getuid()    fmt.Println("uid:", uid)    //err:getgroups: not supported by windows    g, err := os.Getgroups()    fmt.Println(g, "error", err)    pagesize := os.Getpagesize()    fmt.Println("pagesize:", pagesize)    ppid := os.Getppid()    fmt.Println("ppid", ppid)    //filemode, err := os.Stat("main.go")    //不存在檔案返回GetFileAttributesEx test2: The system cannot find the file specified.    filemode, err := os.Stat("main.go")    if err == nil {        fmt.Println("Filename:", filemode.Name())        fmt.Println("Filesize:", filemode.Size())        fmt.Println("Filemode:", filemode.Mode())        fmt.Println("Modtime:", filemode.ModTime())        fmt.Println("IS_DIR", filemode.IsDir())        fmt.Println("SYS", filemode.Sys())    } else {        fmt.Println("os.Stat error", err)    }    //Chmod is not supported under windows.    //在windows變化是這樣子的 -rw-rw-rw- => -r--r--r--    err = os.Chmod("main.go", 7777)    fmt.Println("chmod:", err)    filemode, err = os.Stat("main.go")    fmt.Println("Filemode:", filemode.Mode())    //access time modification time    err = os.Chtimes("main.go", time.Now(), time.Now())    fmt.Println("Chtime error:", err)    //擷取全部的環境變數    data := os.Environ()    for _, val := range data {        fmt.Println(val)    }    fmt.Println("---------end---environ----------------------")    mapping := func(s string) string {        m := map[string]string{"xx": "sssssssssssss",            "yy": "ttttttttttttttt"}        return m[s]    }    datas := "hello $xx blog address $yy"    //這個函數感覺還蠻有用處    expandStr := os.Expand(datas, mapping)    fmt.Println(expandStr)    datas = "GOBIN PATH $gopaTh" //不區分大小寫    fmt.Println(os.ExpandEnv(datas))    hostname, err := os.Hostname()    fmt.Println("hostname:", hostname)    _, err = os.Open("WWWW.XX")    if err != nil {        fmt.Println(os.IsNotExist(err))        fmt.Println(err)    }    f, err := os.Open("WWWW.XX")    if err != nil && !os.IsExist(err) {        fmt.Println(f, "not exist")    }    //windows 下兩個都是true    fmt.Println(os.IsPathSeparator('/'))    fmt.Println(os.IsPathSeparator('\\'))    fmt.Println(os.IsPathSeparator('.'))    //判斷返回的error 是否是因為許可權的問題    //func IsPermission(err error) bool    // not supported by windows    err = os.Link("main.go", "newmain.go")    if err != nil {        fmt.Println(err)    }    var pathSep string    if os.IsPathSeparator('\\') {        pathSep = "\\"    } else {        pathSep = "/"    }    fmt.Println("PathSeparator:", pathSep)    //MkdirAll 建立的是所有下級目錄,如果沒有就建立他    //Mkdir 建立目錄,如果是多級目錄遇到還未建立的就會報錯    err = os.Mkdir(dir+pathSep+"md"+pathSep+"md"+pathSep+"md"+pathSep+"md"+pathSep+"md", os.ModePerm)    if err != nil {        fmt.Println(os.IsExist(err), err)    }    err = os.RemoveAll(dir + "md\\md\\md\\md\\md")    fmt.Println("removall", err)    //rename 實際上通過movefile來實現的    err = os.Rename("main.go", "main1.go")    f1, _ := os.Stat("main.go")    f2, _ := os.Stat("main1.go")    if os.SameFile(f1, f2) {        fmt.Println("the sanme")    } else {        fmt.Println("not same")    }    //os.Setenv 這個函數是設定環境變數的很簡單    evn := os.Getenv("WD_PATH")    fmt.Println("WD_PATH:", evn)    err = os.Setenv("WD_PATH", "D:/project")    if err != nil {        fmt.Println(err)    }    tmp, _ := ioutil.TempDir(dir, "tmp")    fmt.Println(tmp)    tmp = os.TempDir()    fmt.Println(tmp)    cf, err := os.Create("golang.go")    defer cf.Close()    fmt.Println(err)    fmt.Println(reflect.ValueOf(f).Type())    of, err := os.OpenFile("golang.goss", os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0777)    defer of.Close()    fmt.Println("os.OpenFile:", err)    oof, err := os.Open("golang.goss")    defer oof.Close()    fmt.Println("os.Open file:", oof.Fd())    fmt.Println("os.Open err:", err)    oof.Close()    r, w, err := os.Pipe()    w.Write([]byte("1111"))    var buf = make([]byte, 4)    r.Read(buf)    fmt.Println(buf)    w.Write([]byte("2222"))    r.Read(buf) // 如果沒有調用w.Write(),r.Read()就會阻塞    fmt.Println("ssss--", buf)    b := make([]byte, 100)    ff, _ := os.Open("main.go")    n, _ := ff.Read(b)    fmt.Println(n)    fmt.Println(string(b[:n]))    //第二個參數,是指,從第幾位開始讀取    n, _ = ff.ReadAt(b, 20)    fmt.Println(n)    fmt.Println(string(b[:n]))    //擷取檔案夾下檔案的列表    dirs, err := os.Open("md")    if err != nil {        fmt.Println(err)    }    defer dirs.Close()    //參數小於或等去0,表示讀取所有的檔案    //另外一個唯讀取檔案名稱的函數    //fs, err := dirs.Readdirname(0)    fs, err := dirs.Readdir(-1)    if err == nil {        for _, file := range fs {            fmt.Println(file.Name())        }    } else {        fmt.Println("Readdir:", err)    }    //func (f *File) WriteString(s string) (ret int, err error)    //寫入字串函數原型,哪個個函數比較快呢??    //p, _ := os.FindProcess(628)    //fmt.Println(p)    //p.Kill()    attr := &os.ProcAttr{        Files: []*os.File{os.Stdin, os.Stdout, os.Stderr},    }    //參數也可以這麼寫 `c:\windows\system32\notepad.EXE`  用的是反單引號    p, err := os.StartProcess("c:\\windows\\system32\\notepad.EXE", []string{"c:\\windows\\system32\\notepad.EXE", "d:/1.txt"}, attr)    p.Release()    time.Sleep(1000000000)    p.Signal(os.Kill)    os.Exit(10)}

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.