1. FileInfo
package main
import (
"os"
"fmt"
)
func main() {
/*
FileInfo:文件信息
interface
Name(),文件名
Size(),文件大小,字节为单位
IsDir(),是否是目录
ModTime(),修改时间
Mode(),权限
*/
//stat 统计
fileInfo, err := os.Stat("/Users/ruby/Documents/pro/a/aa.txt")
if err != nil {
fmt.Println("err :", err)
return
}
fmt.Printf("%T\n", fileInfo)
//文件名
fmt.Println(fileInfo.Name())
//文件大小
fmt.Println(fileInfo.Size())
//是否是目录
fmt.Println(fileInfo.IsDir()) //IsDirectory
//修改时间
fmt.Println(fileInfo.ModTime())
//权限
fmt.Println(fileInfo.Mode()) //-rw-r--r--
}
2. 文件操作
package main
import (
"fmt"
"path/filepath"
"path"
"os"
)
func main() {
/*
文件操作:
1.路径:
相对路径:relative
ab.txt
相对于当前工程
绝对路径:absolute
/Users/ruby/Documents/pro/a/aa.txt
.当前目录
..上一层
2.创建文件夹,如果文件夹存在,创建失败
os.MkDir(),创建一层
os.MkDirAll(),可以创建多层
3.创建文件,Create采用模式0666(任何人都可读写,不可执行)创建一个名为name的文件,如果文件已存在会截断它(为空文件)
os.Create(),创建文件
4.打开文件:让当前的程序,和指定的文件之间建立一个连接
os.Open(filename)
os.OpenFile(filename,mode,perm)
5.关闭文件:程序和文件之间的链接断开。
file.Close()
5.删除文件或目录:慎用,慎用,再慎用
os.Remove(),删除文件和空目录
os.RemoveAll(),删除所有
*/
//1.路径
fileName1:="/Users/ruby/Documents/pro/a/aa.txt"
fileName2:="bb.txt"
fmt.Println(filepath.IsAbs(fileName1)) //true
fmt.Println(filepath.IsAbs(fileName2)) //false
fmt.Println(filepath.Abs(fileName1)) //获取绝对路径
fmt.Println(filepath.Abs(fileName2)) //获取绝对路径
fmt.Println("获取父目录:",path.Join(fileName1,".."))
//2.创建目录
err := os.Mkdir("/Users/ruby/Documents/pro/a/bb",os.ModePerm) //os.ModePerm 权限 0777
if err != nil{ //文件夹存在就创建失败
fmt.Println("err:",err)
return
}
fmt.Println("文件夹创建成功。。")
//创建多层目录
err :=os.MkdirAll("/Users/ruby/Documents/pro/a/cc/dd/ee",os.ModePerm)
if err != nil{
fmt.Println("err:",err)
return
}
fmt.Println("多层文件夹创建成功")
//3.创建文件:Create采用模式0666(任何人都可读写,不可执行)创建一个名为name的文件,如果文件已存在会截断它(为空文件)
file1,err :=os.Create("/Users/ruby/Documents/pro/a/ab.txt")
if err != nil{
fmt.Println("err:",err)
return
}
fmt.Println(file1)
file2,err := os.Create(fileName2)//创建相对路径的文件,是以当前工程为参照的
if err != nil{
fmt.Println("err :",err)
return
}
fmt.Println(file2)
//4.打开文件:
file3 ,err := os.Open(fileName1) //只读的
if err != nil{
fmt.Println("err:",err)
return
}
fmt.Println(file3)
/*
第一个参数:文件名称
第二个参数:文件的打开方式
const (
O_RDONLY int = syscall.O_RDONLY // 只读模式打开文件
O_WRONLY int = syscall.O_WRONLY // 只写模式打开文件
O_RDWR int = syscall.O_RDWR // 读写模式打开文件
O_APPEND int = syscall.O_APPEND // 写操作时将数据附加到文件尾部
O_CREATE int = syscall.O_CREAT // 如果不存在将创建一个新文件
O_EXCL int = syscall.O_EXCL // 和O_CREATE配合使用,文件必须不存在
O_SYNC int = syscall.O_SYNC // 打开文件用于同步I/O
O_TRUNC int = syscall.O_TRUNC // 如果可能,打开时清空文件
)
第三个参数:文件的权限:文件不存在创建文件,需要指定权限
*/
file4,err := os.OpenFile(fileName1,os.O_RDONLY|os.O_WRONLY,os.ModePerm)
if err != nil{
fmt.Println("err:",err)
return
}
fmt.Println(file4)
//5关闭文件,
file4.Close()
//6.删除文件或文件夹:
//删除文件
err := os.Remove("/Users/ruby/Documents/pro/a/aa.txt")
if err != nil{
fmt.Println("err:",err)
return
}
fmt.Println("删除文件成功。。")
//删除目录
err := os.RemoveAll("/Users/ruby/Documents/pro/a/cc")
if err != nil{
fmt.Println("err:",err)
return
}
fmt.Println("删除目录成功。。")
}