Go语言标准库file

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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
package main

import (
"fmt"
"io/ioutil"
"os"
)

//文件操作
func main() {
//os.Open() 函数打开文件 返回*File和err
file, err := os.Open("./config.ini")
if err != nil {
fmt.Println("文件打开失败, 错误信息: ", err)
return
}
fmt.Println(file)
defer file.Close()

//读文件
//func (f *os.File) Read(b[]byte) (n int, err error)
//var tmp = make([]byte, 128)
//n, err := file.Read(tmp)
//if err == io.EOF {
// fmt.Println("已读到文件末尾")
// return
//}
//if err != nil {
// fmt.Println("读取文件失败, 错误信息: ", err)
// return
//}
//fmt.Printf("读取了%d字节数据", n)
//fmt.Println(string(tmp[:n]))

//循环读取
//var content []byte
//var tmp = make([]byte, 128)
//for {
// n, err := file.Read(tmp)
// if err == io.EOF {
// fmt.Println("已读到文件末尾")
// break
// }
// if err != nil {
// fmt.Println("读取文件失败, 错误信息: ", err)
// return
// }
// content = append(content, tmp[:n]...)
//}
//fmt.Println(string(content))

//bufio按行读取
//var ss string
//reader := bufio.NewReader(file)
//for {
// line, err := reader.ReadString('\n') //字符分隔
// if err == io.EOF {
// fmt.Println("已读到文件末尾")
// break
// }
// if err != nil {
// fmt.Println("读取文件失败, 错误信息: ", err)
// return
// }
// ss = ss + line
//}
//fmt.Println(ss)

//ioutil读取整个文件
content, err := ioutil.ReadFile("./config.ini")
if err != nil {
fmt.Println("读取文件失败, 错误信息: ", err)
return
}
fmt.Println(string(content))
}

// 写入操作

package main

import (
"fmt"
"io/ioutil"
)

//文件写入
//os.OpenFile(name string, flag int, perm FileMode) (*File, error) 以指定模式打开文件
//name 需要操作的文件名
//flag 打开模式

//os.O_WRONLY 只写
//os.O_CREATE 创建文件
//os.O_RDONLY 只读
//os.O_RDWR 读写
//os.O_TRUNC 清空
//os.O_APPEND 追加

//perm 文件权限 一个八进制数 r 04 w 02 x 01

func main() {
//file, err := os.OpenFile("test.txt", os.O_CREATE|os.O_TRUNC|os.O_WRONLY, 0666)
//if err != nil {
// fmt.Println("打开文件异常, 报错: ", err)
// return
//}
//defer file.Close()
//str := "优秀,非常优秀\n"
//file.Write([]byte(str)) // 通过字节切片写入文件
//file.WriteString("我们都很优秀") //直接将字符串写入文件

//bufio.NewWriter
//writer := bufio.NewWriter(file)
//for i := 0; i < 10; i ++ {
// writer.WriteString("bufio你好,中国\n") // 先将数据写入缓存
//}
//writer.Flush() // 将缓存的内容写入文件

//ioutil.WriteFile
str := "ioutil优秀,非常优秀\n"
err := ioutil.WriteFile("test.txt", []byte(str), 0666)
if err != nil {
fmt.Println("打开文件异常, 报错: ", err)
return
}
}