go文件操作

1.目录操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package main

import "os"

func main() {

// 创建名称为name的目录,权限设置是perm。
os.Mkdir("temp1", 0666)

// 创建多级子目录,权限设置是perm。
os.MkdirAll("temp2/test/conf", 0666)

// 删除名称为name的目录,当目录下有文件或者其他目录会出错。
os.Remove("temp1")

// 删除多级子目录。
// path = "temp2/test/conf",则只删除conf目录
// path = "temp2",删除temp2及其子目录
os.RemoveAll("temp2")
}

2.文件操作

2.1.新建与打开文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
package main

import (
"os"
"syscall"
)

func main() {

// 新建文件,根据name创建新的文件,返回一个文件对象(默认权限为0666,且可读写)。
f, _ := os.Create("test.conf")
defer f.Close()

// 根据文件描述符创建相应name的文件。
f1 := os.NewFile(uintptr(syscall.Stdout), "test1.conf")
defer f1.Close()

// 打开名称为name的文件(只读模式)
f3, _ := os.Open("test.conf")
defer f3.Close()

// 以flag(读写、只读等),perm权限的方式,打开或者创建名称为name的文件。
f4, _ := os.OpenFile("test.conf", os.O_WRONLY, 0666)
defer f4.Close()
}

2.2.读写文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
package main

import (
"io"
"os"
)

func main() {

f, _ := os.OpenFile("test.conf", os.O_RDWR|os.O_APPEND, 0666)

// 写文件
f.Write([]byte("hello world!\r\n"))
f.WriteString("hello mebaron!\r\n")
io.WriteString(f, "hello io pakage!\r\n")
f.Close()

f, _ = os.Open("test.conf")
defer f.Close()
// 读文件
buf := make([]byte, 1024)
for {
n, _ := f.Read(buf)
if n == 0 {
break
}
os.Stdout.Write(buf[:n])
}
}