Go语言file操作
文件操作:
1.路径:相对路径:relative (相对于当前工程)
绝对路径:absolute F:/a.txt
. 当前目录
.. 上一层目录
//1、路径
fileName1:="F:/a.txt"
fileName2:="a.txt"
fmt.Println(filepath.IsAbs(fileName1)) //true
fmt.Println(filepath.IsAbs(fileName2)) //false
fmt.Println(filepath.Abs(fileName1)) //F:\a.txt
fmt.Println(filepath.Abs(fileName2)) //F:\golang\project\src\go_code\study\fileInfo\a.txt
fmt.Println("获取父目录:",path.Join(fileName1,"..")) //获取父目录: F:
2.创建文件夹,如果文件夹存在,创建失败
os.Mkdir(),创建一层
os.MkdirAll(),可以创建多层
//2、创建文件夹
//只能创建一层文件夹
err:=os.Mkdir("F:/golang/aaa",os.ModePerm)
if err != nil {
fmt.Println("err:",err)
return
}
fmt.Println("文件夹创建成功...")
//能创建多层文件夹
err=os.MkdirAll("F:/golang/bb/cc/dd",os.ModePerm)
if err != nil {
fmt.Println("err:",err)
return
}
fmt.Println("多层文件夹创建成功..")
3.创建文件,Create采用模式0666(任何人都可以读写,不可执行)创建一个名为name的文件,如果文件存在则将它置为空文件
创建相对路径的文件,是以当前工程为参照
os.Create(),创建文件
//3、创建文件:Create采用模式0666(任何人都可以读写,不可执行)
//创建一个名为name的文件,如果文件存在则将它置为空文件
file1,err :=os.Create("F:/golang/abc.txt")
if err != nil {
fmt.Println("err:",err)
return
}
fmt.Println(file1) //&{0xc00007c780}
4.打开文件,让当前的程序,和指定的文件之间建立一个连接
os.Open(filename)
os.OpenFile(filename,mode,perm)
//4、打开文件
//只读
file2,err:=os.Open(fileName1)
if err != nil {
fmt.Println("err:",err)
return
}
fmt.Println(file2)
/*
第一个参数:文件名称
第二个参数:文件的打开方式
const (
// Exactly one of O_RDONLY, O_WRONLY, or O_RDWR must be specified.
O_RDONLY int = syscall.O_RDONLY // open the file read-only.
O_WRONLY int = syscall.O_WRONLY // open the file write-only.
O_RDWR int = syscall.O_RDWR // open the file read-write.
// The remaining values may be or'ed in to control behavior.
O_APPEND int = syscall.O_APPEND // append data to the file when writing.
O_CREATE int = syscall.O_CREAT // create a new file if none exists.
O_EXCL int = syscall.O_EXCL // used with O_CREATE, file must not exist.
O_SYNC int = syscall.O_SYNC // open for synchronous I/O.
O_TRUNC int = syscall.O_TRUNC // truncate regular writable file when opened.
)
第三个参数:文件的权限:文件不存在创建文件,需要指定权限
*/
file3,err:=os.OpenFile(fileName1,os.O_RDONLY|os.O_WRONLY,os.ModePerm)
if err != nil {
fmt.Println("err:",err)
return
}
fmt.Println(file3)
5.关闭文件:程序和文件之间的链接断开
file.Close()
//5、关闭文件
file3.Close()
6.删除文件或目录:慎用
os.Remove(),删除文件或空目录
os.RemoveAll(),删除所有
//6.删除文件夹或文件
err=os.Remove("F:/golang/abc.txt")
if err != nil {
fmt.Println("err:",err)
return
}
fmt.Println("删除文件成功!")
7.获取文件 :os.Stat()
//获取文件
fireInfo ,err :=os.Stat("F:/a.txt")
if err !=nil{
fmt.Println("err:",err)
return
}
//文件类型
fmt.Printf("%T\n",fireInfo) //*os.fileStat
//文件名
fmt.Println(fireInfo.Name()) //a.txt
//文件大小
fmt.Println(fireInfo.Size()) //3
//是否是目录
fmt.Println(fireInfo.IsDir()) //false
//最后修改文件时间
fmt.Println(fireInfo.ModTime()) //
2022-03-18 16:34:19.2974303 +0800 CST
//权限
/*
- 表示文件
d 表示目录
后面九位分别表示用户,组,其他用户对应的权限
*/
fmt.Println(fireInfo.Mode()) //-rw-rw-rw-
感谢观看!