目录
文件操作,大体分为两部分:
文件读取
package main
import (
"io/IoUtil"
"log"
)
func main() {
// 读取文件内容
file,_ := os.OpenFile("./demo_unicode.html",2,0666)
fileByte1,_ = IoUtil.ReadAll(file);
// 读取文件内容,更简易的方法
fileByte2,_ := IoUtil.ReadFile("./demo_unicode.html")
// byte转string
fileString := string(fileByte2)
log.Println(fileString)
}
创建 写入 移动 拷贝 删除 文件 创建文件夹
package main
import (
"io"
"os"
)
func main() {
// 设定工作路径,一般在项目刚开始设定一次即可,不要在异步过程中修改工作路径
// 默认是程序执行的路径
os.Chdir("./")
// 创建文件夹
os.MkdirAll("./aa/bb/c1",0777)
os.MkdirAll("./aa/bb/c2",0777)
// 创建文件
os.Create("./aa/bb/c1/file.go")
// 移动文件
os.Rename("./aa/bb/c1/file.go","./aa/bb/c2/file.go")
// 打开文件,得到一个 *File 对象,用于后续的写入
file,_ := os.OpenFile("./aa/bb/c2/file.go",0666)
// 写入文件内容
io.WriteString(file,`
package main
func main(){
log.Println("我是由程序写入的代码")
}
`)
// 也可以直接调用file里的函数写入内容
file.WriteString("add string")
// 拷贝文件,拷贝其实就是创建一个文件,然后写入文件内容
src1,_ := os.Create("./aa/bb/c1/file-copy1.go")
io.copy(file,src1) // 把文件file,写入src1文件
// 删除文件或文件夹
os.Create("./aa/bb/c1/file-delete.go") // 创建一个文件用于删除
os.RemoveAll("./aa/bb/c1/file-delete.go")
}
文件覆盖判断
os.IsNotExist
当文件已存在时,不管是os.Rename()
,os.Create()
,还是io.WriteString()
都会对已存在的文件进行覆盖\修改,
如果需要安全的执行,可以使用 os.Stat()
配合 os.IsNotExist()
做判断
package main
import (
"io"
"os"
)
func main() {
os.MkdirAll("aa",0777)
// 创建了文件 testA,并且写入了内容
testA,_ := os.Create("aa/testA")
io.WriteString(testA,"the teatA")
// 如果需要安全判断,可以使用 os.Stat 配合 os.IsNotExist
if _,err := os.Stat("aa/testA"); os.IsNotExist(err) {
// 当文件不存在,才执行创建
os.Create("aa/testA")
}
os.Chmod("aa/testA",0777)
}
遍历文件夹
遍历文件夹可以使用 IoUtil库 的IoUtil.ReadDir,会得到一个数组,数组元素有文件的属性,
package main
import (
"io/IoUtil"
"log"
)
func main() {
fs,_ := IoUtil.ReadDir("aa")
for _,v := range fs {
// 遍历得到文件名
log.Println(v.Name())
log.Println(v.IsDir())
}
}
权限
// 所有人可读写权限
os.Chmod("aa/testA",0666)
// 只读权限
os.Chmod("aa/testA",0400)
Linux权限参考:
-rw------- (600) 只有拥有者有读写权限。
-rw-r--r-- (644) 只有拥有者有读写权限;而属组用户和其他用户只有读权限。
-rwx------ (700) 只有拥有者有读、写、执行权限。
-rwxr-xr-x (755) 拥有者有读、写、执行权限;而属组用户和其他用户只有读、执行权限。
-rwx--x--x (711) 拥有者有读、写、执行权限;而属组用户和其他用户只有执行权限。
-rw-rw-rw- (666) 所有用户都有文件读、写权限。
-rwxrwxrwx (777) 所有用户都有读、写、执行权限。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。