FileInfo接口
package main import ( "fmt" "os" ) // FileInfo 接口文件的信息包括文件名、文件大小、修改权限、修改时间等。 func main() { filePath:="C:\Users\sixinshuier\Desktop\分布式训练\分布式训练.txt" fileInfo,err:=os.Stat(filePath) if err!=nil{ fmt.Println(err) }else { fmt.Println("文件名:",fileInfo.Name()) fmt.Println("文件大小",fileInfo.Size()) fmt.Println("文件权限",fileInfo.Mode()) fmt.Println("是否是文件夹",fileInfo.IsDir()) fmt.Println("修改时间",fileInfo.ModTime()) } }
输出
文件名: 分布式训练.txt 文件大小 0 文件权限 -rw-rw-rw- 是否是文件夹 false 修改时间 2020-05-28 16:46:51.7140497 +0800 CST
文件路径:
filepath.IsAbs() : 判断是否绝对路径 filepath.Rel(): 获取相对路径 filepath.Abs() :获取绝对路径 path.join(): 拼接路径
创建目录:
os.MKdir()仅创建一层目录
os.MKdirAll()创建多层目录。
创建文件:
os.Create()创建文件,如果文件存在,会将其覆盖。
打开和关闭文件:
os.OpenFile(filename,mode,perm)
mode:文件打开方式
perm:文件的权限。文件不存在时创建文件,需要指定权限
删除文件:
os.Remove(filename)
文件读取:
package main import ( "fmt" "io" "os" ) // 文件读取 func main() { filePath:="C:\Users\sixinshuier\Desktop\分布式训练\分布式训练.txt" file,err:=os.Open(filePath) if err!=nil{ fmt.Println(err) }else { bs:= make([]byte,1024*128,1024*128) for{ n,err:=file.Read(bs) if n==0 || err==io.EOF { fmt.Println("读取文件结束!") break } fmt.Println(string(bs[:n])) } } file.Close() }
文件写入:
package main import ( "fmt" "os" ) // 文件写入 func main() { filePath:="C:\Users\sixinshuier\Desktop\分布式训练\分布式训练.txt" file,err:=os.Open(filePath) defer file.Close() if err!=nil{ fmt.Println(err) }else { n,err:=file.Write([]byte("test write....")) if err!=nil{ fmt.Println(err) }else { fmt.Println(n) } } }
ioutil包:
ReadFile() 读取文件中所有的数据,返回读取的字节数组
WriteFile()向指定文件写入数据,如果文件不存在,则创建文件,写入数据之前清空文件
bufio
bufio实现了带缓冲的I/O操作,达到高效读写。
bufio包对io包下的对象Reader、Writer进行包装,分别实现了io.Reader和io.Writer接口,提供了数据缓冲功能,能够一定程度减少大块数据读写带来的开销,所以bufio比直接读写更快。
package main import ( "bufio" "fmt" "io" "os" ) // bufino 读取文件 func main() { filePath:="C:\Users\sixinshuier\Desktop\分布式训练\分布式训练.txt" // 打开文件 file,err:=os.Open(filePath) defer file.Close() if err!=nil{ fmt.Println(err) }else { // 创建缓冲区 reader:= bufio.NewReader(file) fmt.Printf("%T",reader) for { // 读取文件 s,err:=reader.ReadString(' ') if err==io.EOF{ break }else { fmt.Println(s) } } } }