Go 文件操作

文件夹操作
1 创建文件夹
os.Mkdir(path,os.ModePerm) //os.ModePerm 0777
创建多级目录
os.MkdirAll("path1/path2/path3,os.ModePerm) //os.ModePerm 0777
获取当前目录
os.Getwd()//获取当前目录
打开文件夹
files,err:=ioutil.ReadDir(path)
file,err := os.Open("/path/dir")
读取文件夹
file.Readdir(5) //输出5个文件的名字,负值的时候输出所有的名字
删除文件夹
os.RemoveAll(dir)
文件操作
打开文件 file,err:=os.Open("filePath") filePath 是相对于执行文件来讲的
关闭文件 file.Close()
读取文件
reader :=bufio.NewReader(file)
reader.ReadLine() //读取一行
reader.ReadString('\n') //碰到第一个\n 就返回
bytes,error := ioutil.ReadFile(filePath) 读取文件的内容并显示在终端(使用 ioutil 一次将整个文件读入到内存中),这种方式适用于文件不大的情况。相关方法和函数(ioutil.ReadFile)
写入文件
OpenFile(name string, flag int, perm FileMode) (file *File, err error)
name 文件路径名称
flag 文件打开的模式
O_RDONLY 只读模式打开
O_WRONLY 只写模式打开
O_RDWR 读写模式打开文件
O_APPEND 写操作时将数据附加到文件尾部
O_CREATE 如果不存在将创建一个新文件
O_EXCL 和create配合使用,文件必须不存在
O_SYNC 打开文件用于同步I/O
O_TRUNC 如果可能 打开时清空文件
第三个参数perm:权限控制(系统)
权限取值范围:0~7
0:没有任何权限
1:执行权限()如果文件是可执行文件,是可以运行的
2:写权限
3:写权限和执行权限
4:读权限
5:读权限和执行权限
6:读权限和写权限
7:读权限、写权限和执行权限
创建一个只写文件
file, e := os.OpenFile(filePath, os.O_CREATE|os.O_EXCL|os.O_WRONLY, 0666)
writer :=bufio.NewWriter(file)
nn, e := writer.Write([] byte("hello golang")) //写入缓冲区 nn是写入的长度
e = writer.Flush() 刷入文件
//覆盖内容
file, e := os.OpenFile(filePath, os.O_WRONLY, 0666)
//追加方式
file, e := os.OpenFile(filePath, os.O_WRONLY | os.O_APPEND, 0666)
//删除文件
os.Remove(filePath)
//获取目录状态信息
info,_ := os.Stat(path)
//是否是文件夹
info.IsDir()
//所有文件夹信息
ioutil.ReadDir(path)
踩坑1
func writeFile(){
handler1,err1:=os.OpenFile(searchDir+"/"+"jack"+"/lee.txt", os.O_APPEND|os.O_WRONLY,0777)
n,err1 :=io.WriteString(handler1,"jack1")
fmt.Printf("写入 %d 个字节n", n)
if err1 != nil {
fmt.Printf("sth is wrong %v", err1)
}
defer handler1.Close()
return
}
func main() {
writeFile("/mnt/hgfs/www/lj/go/Api/gin")
}
//这里我只写了os.O_APPEND,结果发现jack.txt里面没东西,最后发现需要O_RDONLY, O_WRONLY, or O_RDWR这三个flag里面至少有一个才行

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注