zoukankan      html  css  js  c++  java
  • go里面os包的使用案例

    1.获取所有的环境变量[os.Environ]

    package  main
    
    import (
        "fmt"
        "os"
        "strings"
    )
    func main(){
        envs:=os.Environ();
        for _,env:=range envs {
            cache:= strings.Split(env,"=");
            fmt.Printf("key=%v value=%v
    ",cache[0],cache[1]);
        }
    }

    2.获取环境变量

    package  main
    import (
        "fmt"
        "os"
    )
    func main(){
        path:=os.Getenv("GOPATH");
        fmt.Println(path);
    }

     3.设置环境

    package  main
    
    import "os"
    
    func main(){
    	os.Setenv("GOPATH","E/info");//使用SetEnv()来设置环境
    }

     

    文件信息

    type FileInfo interface {
        Name() string       // 文件的名字(不含扩展名)
        Size() int64        // 普通文件返回值表示其大小;其他文件的返回值含义各系统不同
        Mode() FileMode     // 文件的模式位
        ModTime() time.Time // 文件的修改时间
        IsDir() bool        // 等价于Mode().IsDir()
        Sys() interface{}   // 底层数据来源(可以返回nil)
    }

    获取文件信息对象, 符号链接将跳转

    func Stat(name string) (fi FileInfo, err error)

    fi, _ := os.Stat("./cache.js")
     
    fmt.Println(fi.Size())

    获取文件信息对象, 符号链接不跳转

    package main
     
    import (
        "fmt"
        "os"
    )
     
    func main() {
        fi, _ := os.Lstat("./main.go")
     
        fmt.Println(fi.Size())
    }

    根据错误,判断 文件或目录是否存在

    package main
     
    import (
        "fmt"
        "os"
    )
     
    func main() {
        if _, err := os.Open("./empty.js"); err != nil {
            // false 不存在   true 存在
            emptyErr := os.IsExist(err)
            fmt.Println(emptyErr, "
    ", err)
        }
    }

    IsExist 反义方法

    package main
     
    import (
        "fmt"
        "os"
    )
     
    func main() {
        if _, err := os.Open("./empty.js"); err != nil {
            // false 不存在   true 存在
            emptyErr := os.IsNotExist(err)
            fmt.Println(emptyErr, "
    ", err)
        }
    }

    根据错误,判断是否为权限错误

    package main
     
    import (
        "fmt"
        "os"
    )
     
    func main() {
        file, _ := os.Open("cache.js")
        _, err := file.WriteString("// new info")
     
        if err != nil {
            fmt.Println(os.IsPermission(err))
        }
        defer file.Close()
    }

    文件/目录操作

    属性操作

    获取当前工作目录

    func Getwd() (dir string, err error)

    package main
     
    import (
        "fmt"
        "os"
    )
     
    func main() {
        path, _ := os.Getwd()
        fmt.Println(path)
    }

    修改当前,工作目录

    func Chdir(dir string) error

    package main
     
    import (
        "fmt"
        "os"
    )
     
    func main() {
        path1, _ := os.Getwd()
        fmt.Println(path1)
        os.Chdir("./../")
        path, _ := os.Getwd()
        fmt.Println(path)
     
    }

    增删改查

    创建目录

    func Mkdir(name string, perm FileMode) error
    package  main
    import (
        "fmt"
        "os"
    )
    func main(){
        if err:=os.Mkdir("info",os.ModeDir); err != nil {
            fmt.Println("error");
        }else{
            fmt.Println("success");
        }
    }

    递归创建目录

    func MkdirAll(path string, perm FileMode) error

    package  main
    
    import (
        "fmt"
        "os"
    )
    
    func main(){
        if err:=os.MkdirAll("info/test",os.ModeDir);err !=nil {
            fmt.Println("error");
        }else{
            fmt.Println("success");
        }
    }

    移除文件或目录(单一文件)

    func Remove(name string) error

    package main
    import (
        "fmt"
        "os"
    )
    func main() {
        if err := os.Remove("test"); err != nil {
            fmt.Println(err)
        } else {
            fmt.Println("success")
        }
    
    }

    递归删除文件或目录

    func RemoveAll(path string) error

    package main
    import (
        "fmt"
        "os"
    )
    func main() {
        if err := os.RemoveAll("test01"); err != nil {
            fmt.Println(err)
        } else {
            fmt.Println("success")
        }
    
    }

    文件重名或移动

    package main
    
    import (
    	"fmt"
    	"os"
    )
    func main() {
    	// 重命名
    	err := os.Rename("test.txt", "test01.js")
    	if err != nil {
    		fmt.Println(err)
    	}
    	err = os.Mkdir("test", os.ModeDir)
    	if err != nil {
    		fmt.Println(err)
    	}
    	// 移动
    	err = os.Rename("test01.js", "test/text01.txt")
    	if err != nil {
    		fmt.Println(err)
    	}
    }
    

    文件/目录对象

    打开文件/目录

    创建文件, 如果文件存在,清空原文件

    func Create(name string) (file *File, err error)

    package main
    import (
        "fmt"
        "os"
    )
    func main(){
        file,_:=os.Create("2.txt");
        fmt.Println(file.Name());
    }

    打开文件,获取文件对象, 以读取模式打开

    Open打开一个文件用于读取。如果操作成功,返回的文件对象的方法可用于读取数据;对应的文件描述符具有O_RDONLY模式。如果出错,错误底层类型是*PathError。 
    所以,Open()只能用于读取文件。

    func Open(name string) (file *File, err error)

    package main
     
    import (
        "fmt"
        "os"
    )
     
    func main() {
     
        file, _ := os.Open("./new_file.js")
        fmt.Println(file.Name())
    }

    以指定模式,打开文件

    func OpenFile(name string, flag int, perm FileMode) (file *File, err error)

    package main
     
    import (
        "fmt"
        "os"
    )
     
    func main() {
     
        file, _ := os.OpenFile("./new_file.js", os.O_RDONLY, os.ModeAppend)
        fmt.Println(file.Name())
    }

    文件对象读写操作

    读取文件内容, 读入长度取决 容器切片长度

    func (f *File) Read(b []byte) (n int, err error)

    package main
    import (
        "fmt"
        "os"
    )
    func main(){
        file,_:=os.Open("2.txt");
        bt:=make([]byte,100);
        file.Read(bt);
        defer  file.Close();
        fmt.Println(string(bt));
    }

    从某位置,读取文件内容

    func (f *File) ReadAt(b []byte, off int64) (n int, err error)

    package main
    import (
        "fmt"
        "os"
    )
    func main() {
        bt := make([]byte, 100)
        file, _ := os.Open("test/text01.txt")
        file.ReadAt(bt, 2)
        fmt.Println(string(bt))
    }

    写入内容

    func (f *File) Write(b []byte) (n int, err error)

    package main
    import (
        "fmt"
        "os"
    )
    func main() {
        file, err := os.OpenFile("test/text01.txt", os.O_RDWR, os.ModeAppend)
        if err != nil {
            fmt.Println("err: ", err)
            os.Exit(1)
        }
        defer file.Close()
        if n, err := file.Write([]byte("// new info")); err != nil {
            fmt.Println(err)
        } else {
            fmt.Println(n)
        }
    }

    写入字符

    func (f *File) WriteString(s string) (ret int, err error)

    package main
     
    import (
        "fmt"
        "os"
    )
     
    func main() {
     
        file, err := os.OpenFile("test/text01.txt", os.O_RDWR, os.ModeAppend)
        if err != nil {
            fmt.Println("err: ", err)
            os.Exit(1)
        }
     
        defer file.Close()
     
        if n, err := file.WriteString("// test info"); err != nil {
            fmt.Println(err)
        } else {
            fmt.Println(n)
        }
     
    }

    参考信息[https://www.cnblogs.com/saryli/p/11691142.html]

     
  • 相关阅读:
    Spring MVC的Controller统一异常处理:HandlerExceptionResolver
    Log4j按级别输出日志到不同文件配置
    Linux top命令用法
    free -m内存使用详解
    Linux运维中遇到的常见问题
    ubuntu16.04 nginx安装
    redis主从配置及主从切换
    Redis持久化配置-AOF
    如何处理消极想法
    libevent安装总结
  • 原文地址:https://www.cnblogs.com/zh718594493/p/14177272.html
Copyright © 2011-2022 走看看