go - 关于创建文件的权限,os.FileMode 的哪个组合对应于 fopen 中的 `a`?

标签 go io

考虑以下 Golang 中的短程序,它只是尝试写入一个文件。

package main

import "io/ioutil"
import "os"

func main() {
    ioutil.WriteFile("/tmp/FooBar", []byte("Hello World"), os.ModeAppend)
}

运行这个程序后,我得到一个具有以下权限的文件。

---------- 1 merlin sudo 5 Oct 12 15:02 /tmp/FooBar

权限基本上无法使用。

如果我运行等效的 C 程序。

#include <stdio.h>

int main(){
    FILE* foo = fopen("/tmp/BarFoo", "a");
    fprintf(foo, "Hello World");
    fclose(foo);
}

然后我得到一个看起来像这样的文件,这是更可取的。

-rw-r--r-- 1 merlin sudo 11 Oct 12 15:10 /tmp/BarFoo

Golang 程序中生成具有与 C 程序相同权限的文件的正确标志组合是什么?

我看过 FileMode documentation但没有看到任何好的候选人。

最佳答案

由于 FileMode 包含新创建文件的权限位,因此您需要提供:

ioutil.WriteFile("/tmp/FooBar", []byte("Hello World"), os.ModeAppend | 0644)

关于go - 关于创建文件的权限,os.FileMode 的哪个组合对应于 fopen 中的 `a`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33091071/

相关文章:

java - 清理命令行提示符的打印 (Java)

java - 套接字,BufferedReader 卡在 readLine()

unit-testing - 如何断言模拟方法调用与 testify 按顺序发生?

go - 在 aws-sdk-go 中使用正则表达式过滤 AWS 资源

java - 文件未从 JarInputStream 中完全读取

c# - 检查现有文件

module - 从内核 (3.7) 模块读取 block_device : segfault in submit_bio, bd_disk 丢失

go - 如何在 Gin 中使用 go-bindata?

go - 为什么 os/exec.CombinedOutput() 没有竞争条件?

json - 如何通过结构重新格式化 JSON?