前言
Golang
首先我们在 Golang 官网,查找 os 文档
Index(索引)
文件操作
创建文件:
Create 文件不存在时,则使用模式0666创建该文件;文件存在则被清空
func Create(name string) (file *File, err error)
打开文件
Open 打开将打开命名文件以供读取。如果成功,则可以使用返回文件上的方法进行读取。关联的文件描述符的模式为O_RDONLY。如果有错误,它将是* PathError类型。
func Open(name string) (*File, error)
OpenFile 打开带有指定标志(O_RDONLY等)的命名文件。如果该文件不存在,并且传递了O_CREATE标志,则使用模式perm(在umask之前)创建该文件。
func OpenFile(name string, flag int, perm FileMode) (*File, error)
写文件
perm
func WriteFile(name string, data []byte, perm FileMode) error
读文件:
Read 读取从文件中读取多达len(b)个字节。它返回读取的字节数和遇到的任何错误。在文件末尾,Read返回0,即io.EOF。
func (f *File) Read(b []byte) (n int, err error)
删除文件
Remove 删除将删除命名文件或(空)目录。如果有错误,它将是* PathError类型。
os.Remove(filename)
删除文件夹及其包含的所有子目录和所有文件
RemoveAll RemoveAll删除路径及其包含的所有子代。如果路径不存在,则RemoveAll返回nil(无错误)
os.RemoveAll(dir)
检查文件是否存在
Stat 方法返回文件描述信息 IsNotExist 则确认是否已知该错误以报告文件或目录不存在
func FileIsExisted(filename string) bool {
existed := true
if _, err := os.Stat(filename); os.IsNotExist(err) {
existed = false
}
return existed
}
使用os.Read()和os.Write() 复制文件
func CopyFile3(src, des string, bufSize int) (written int64, err error) {
if bufSize <= 0 {
bufSize = 1*1024*1024 //1M
}
buf := make([]byte, bufSize)
srcFile, err := os.Open(src)
if err != nil {
return 0, err
}
defer srcFile.Close()
//获取源文件的权限
fi, _ := srcFile.Stat()
perm := fi.Mode()
desFile, err := os.OpenFile(des, os.O_CREATE|os.O_RDWR|os.O_TRUNC, perm)
if err != nil {
return 0, err
}
defer desFile.Close()
count := 0
for {
n, err := srcFile.Read(buf)
if err != nil && err != io.EOF {
return 0, err
}
if n == 0 {
break
}
if wn, err := desFile.Write(buf[:n]); err != nil {
return 0, err
} else {
count += wn
}
}
return int64(count), nil
}