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\n",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)
}
- Stat
获取文件信息对象, 符号链接将跳转
func Stat(name string) (fi FileInfo, err error)
fi, _ := os.Stat("./cache.js")
fmt.Println(fi.Size())
- Lstat
获取文件信息对象, 符号链接不跳转
package main
import (
"fmt"
"os"
)
func main() {
fi, _ := os.Lstat("./main.go")
fmt.Println(fi.Size())
}
- IsExist
根据错误,判断 文件或目录是否存在
package main
import (
"fmt"
"os"
)
func main() {
if _, err := os.Open("./empty.js"); err != nil {
// false 不存在 true 存在
emptyErr := os.IsExist(err)
fmt.Println(emptyErr, "\n", err)
}
}
- IsNotExist
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, "\n", err)
}
}
- IsPermission
根据错误,判断是否为权限错误
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()
}
文件/目录操作
属性操作
- Getwd
获取当前工作目录
func Getwd() (dir string, err error)
package main
import (
"fmt"
"os"
)
func main() {
path, _ := os.Getwd()
fmt.Println(path)
}
- Chdir
修改当前,工作目录
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)
}
增删改查
- Mkdir
创建目录
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");
}
}
- MkdirAll
递归创建目录
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");
}
}
- Remove
移除文件或目录(单一文件)
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")
}
}
- RemoveAll
递归删除文件或目录
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")
}
}
- Rename
文件重名或移动
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)
}
}
文件/目录对象
打开文件/目录
- Create
创建文件, 如果文件存在,清空原文件
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
打开文件,获取文件对象, 以读取模式打开
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())
}
- OpenFile
以指定模式,打开文件
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())
}
文件对象读写操作
- Read
读取文件内容, 读入长度取决 容器切片长度
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));
}
- ReadAt
从某位置,读取文件内容
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))
}
- Write
写入内容
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)
}
}
- WriteString
写入字符
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)
}
}