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]