Golang file操作详解

LiberHome

文件信息

可以用fileInfo这个API:

package main

import (
    "fmt"
    "os"
)
func main()  {
    fileInfo, err := os.Stat("/Users/liberhome/GolandProjects/awesomeProject/test/test.txt")
    if err != nil {
        fmt.Println("err: ", err)
        return
    }
    // 文件类型
    fmt.Printf("%T\n", fileInfo)
    // 文件名 
    fmt.Println(fileInfo.Name())
    // size 
    fmt.Println(fileInfo.Size())
    // isdir 
    fmt.Println(fileInfo.IsDir())
    // Mode
    fmt.Println(fileInfo.Mode())
}

文件权限

权限的表示可以用符号 or 8进制表示

符号表示

第一个是类型,如果是文件 用-表示 目录用d表示
后面三个分别代表当前应用具有的权限、当前应用所在的组、其他人的权限

权限一般分为3种:
r (可读) w(可写) x(可执行) 没有哪一个权限就用-代替表示
-rwxr-xr-x

首先第一个-表明了这是一个文件
后面的rwx表明了这个文件拥有可读可写可执行的3个权限
后面的r-x表明了他所在的组的权限是可读可执行不可写
后面的r-x表明了其他人的权限是可读可执行不可写

其实更加常用的是用

数字表示

r( 可读) 用004表示
w(可写) 用002表示
x(可执行)用001表示
- 用000表示

比如0777 中的7就是4+2+1就是可读可写可执行

文件路径

相对路径与绝对路径的API:filepath

filepath.IsAbs() : 判断是否是绝对路径
filepath.Abs(xxx): 得到文件xxx的绝对路径
📢📢📢
os.ModePerm是一个常数 代表0777 也就是可读可写可执行

os.Mkdir可以创建最后一级文件夹
os.MkdirAll可以把到最后一级没有出现过的文件夹全部创建出来

创建文件

默认采用0666 可读写不可执行权限

    file1, err := os.Create("/Users/liberhome/GolandProjects/awesomeProject/test/test1.txt")
    if err != nil {
        fmt.Println(file1)
    }

打开文件

Open 与 OpenFile的区别:open打开的文件是只读的,OpenFile可以在参数里指定权限打开

关闭文件

file.Close()

删除文件

os.remove("path")//删除文件 or 空的文件夹
os.removeAll("path")//删除文件 or 文件夹 [慎用,不会经过回收站]

参考资料来源:
bilibili

阅读 322

专栏帖子里有问题需要探讨 欢迎 📩 liberhome@163.com

347 声望
1.1k 粉丝
0 条评论

专栏帖子里有问题需要探讨 欢迎 📩 liberhome@163.com

347 声望
1.1k 粉丝
文章目录
宣传栏