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 ", 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("删除目录成功。。") }