Golang中OpenFile参数详解与使用指南
Golang中OpenFile参数详解与使用指南 OpenFile 函数接受三个参数,我理解前两个参数的用途,但难以理解第三个参数的作用。 使用 OpenFile 函数的示例:
file, err = os.OpenFile("test.txt", os.O_APPEND, 0666)
第一个参数是文件名,第二个参数是我们对文件可以执行的操作(在此例中为追加),但第三个参数决定了什么?
4 回复
谢谢,请问您能告诉我在哪里可以查阅到所有现有的权限模式吗?
更多关于Golang中OpenFile参数详解与使用指南的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
No_Name:
在哪里可以阅读所有现有的权限信息
http://permissions-calculator.org 是一个链接。我从未使用过第一个位置。0777 表示所有人都有读/写/执行权限
第三个参数 perm 指定了文件的权限模式(permission mode),它决定了文件在创建时的访问权限。这个参数仅在创建新文件时生效(即当使用了 os.O_CREATE 标志时),如果文件已存在则不会修改其权限。
权限模式使用 Unix 风格的八进制数表示,常见值包括:
0644:文件所有者可读写,其他用户只读0755:文件所有者可读写执行,其他用户可读执行0666:所有用户可读写
在你的示例中,0666 表示创建的文件对所有用户可读写。但要注意,实际权限还会受到 umask 的影响。
示例代码:
// 创建新文件并设置权限
file, err := os.OpenFile("newfile.txt", os.O_CREATE|os.O_WRONLY, 0644)
if err != nil {
log.Fatal(err)
}
defer file.Close()
// 写入内容
_, err = file.WriteString("Hello, World!\n")
if err != nil {
log.Fatal(err)
}
// 检查文件权限
info, _ := file.Stat()
fmt.Printf("File mode: %o\n", info.Mode().Perm())
// 输出类似:File mode: 644
另一个更完整的示例:
// 创建可执行脚本文件
script, err := os.OpenFile("myscript.sh",
os.O_CREATE|os.O_WRONLY|os.O_TRUNC,
0755) // 所有者可读写执行,其他用户可读执行
if err != nil {
log.Fatal(err)
}
defer script.Close()
script.WriteString("#!/bin/bash\necho 'Hello from script'")
如果只是打开现有文件而不创建新文件,权限参数通常会被忽略,但为了代码清晰,建议始终提供合适的值。


