os.Create 创建文件

根据提供的文件名创建新的文件并返回一个默认权限是 0666 的文件对象(即可读写对象)。

func Create(name string) (file *File, err Error)

  1. package main
  2. import (
  3. "fmt"
  4. "os"
  5. )
  6. func main() {
  7. f, err := os.Create("C:/Users/Administrator/Downloads/test.txt")
  8. if err != nil {
  9. fmt.Println(err)
  10. }
  11. defer f.Close()
  12. fmt.Println("create file successful")
  13. }

os.Open 打开文件

以只读的方式打开名为 name 的文件,函数内部调用 OpenFile 函数。

func Open(name string) (file *File, err Error)

  1. package main
  2. import (
  3. "bufio"
  4. "fmt"
  5. "os"
  6. )
  7. func main() {
  8. f, err := os.Open("C:/Users/Administrator/Downloads/test.txt")
  9. if err != nil {
  10. fmt.Println(err)
  11. }
  12. defer f.Close()
  13. fmt.Println("open file successful")
  14. }

os.OpenFile 打开或创建文件

打开或创建名为 name 的文件,并可设置打开方式和权限。

func OpenFile(name string, flag int, perm uint32) (file *File, err Error)

  • name:文件的绝对/相对路径;
  • flag:打开方式;
    • O_RDONLY:只读;
    • O_WRONLY:只写;
    • O_RDWR:可读可写;
    • O_APPEND:追加;
    • O_CREATE:创建;
  • perm:权限级别,由4位数字组成,如:0767
    • 第1位数字:2表示设置了guid,4表示设置了suid,6表示同时设置了guid和suid;
    • 第2位数字:用户权限级别;
    • 第3位数字:用户组权限级别;
    • 第4位数字:其它权限;
权限级别
数字 二进制位 说明
0 [ 0 0 0 ]、[ - - - ] 没有任何权限
1 [ 0 0 1 ]、[ - - x ] 执行权限(如果文件是可执行文件)
2 [ 0 1 0 ]、[ - w - ] 写权限
3 [ 0 1 1 ]、[ - w x ] 写权限和执行权限
4 [ 1 0 0 ]、[ r - - ] 读权限
5 [ 1 0 1 ]、[ r - x ] 读权限和执行权限
6 [ 1 1 0 ]、[ r w - ] 读权限和写权限
7 [ 1 1 1 ]、[ r w x ] 读、写和执行权限
  1. package main
  2. import (
  3. "fmt"
  4. "os"
  5. )
  6. func main() {
  7. // 1.以可读可写的方式打开文件;
  8. // 2.文件存在时打开,文件不存在时创建;
  9. // 3.用户权限、所属组权限和其它权限均为可读、可写、可执行的最高权限
  10. f, err := os.OpenFile(
  11. "C:/Users/Administrator/Downloads/test.txt",
  12. os.O_RDWR|os.O_CREATE,
  13. 0777)
  14. if err != nil {
  15. fmt.Println(err)
  16. }
  17. defer f.Close()
  18. fmt.Println("open file successful")
  19. }