1.使用Openfile对文件进行读写
1.1 使用Openfile对文件写入
os.OpenFile()函数能够以指定模式打开文件,从而实现文件写入相关功能。
func 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:文件权限
func main() {
//使用openfile写数据
file, err := os.OpenFile("./t1.txt", os.O_APPEND|os.O_CREATE|os.O_RDWR|os.O_TRUNC, 0777)
if err != nil {
fmt.Println(err)
return
}
defer file.Close()
file.Write([]byte("白日依山尽,"))
file.Write([]byte("黄河入海流,"))
}
1.2 使用Openfile读取文件
func main() {
ctx := make([]byte, 1024)
content := make([]byte, 0, 1024*1024*1024)
file, err := os.OpenFile("./t1.txt", os.O_RDONLY, 0777)
if err != nil {
return
}
defer file.Close()
for {
n, err := file.Read(ctx)
if err != nil {
if err == io.EOF {
break
}
fmt.Println(err)
return
}
content = append(content, ctx[:n]...)
}
fmt.Println(string(content))
}
2.使用Open读文件,使用Create写文件
2.1 使用Open读文件
func main() {
con := make([]byte, 1024)
content := make([]byte, 0, 1024*1024)
file, err := os.Open("./t1.txt")
if err != nil {
fmt.Println(err)
return
}
defer file.Close()
for {
n, err := file.Read(con)
if err != nil {
if err == io.EOF {
break
}
fmt.Println(err)
return
}
content = append(content, con[:n]...)
}
fmt.Println(string(content))
}
2.2 使用Create写文件
注意:如果文件路径不存在会创建文件写入,文件存在时先清空在写入
func main() {
file, err := os.Create("./t1.txt")
if err != nil {
fmt.Println(err)
return
}
defer file.Close()
n, err := file.Write([]byte("黄河入海流"))
fmt.Println(n, err)
}
3.使用bufio读取文件
3.1 使用bufio一行一行的读
func main() {
file, err := os.Open("./t1.txt")
if err != nil {
return
}
defer file.Close()
reader := bufio.NewReader(file) //获取读句柄
for {
line, isP, err := reader.ReadLine()
if err != nil {
if err == io.EOF {
break
}
fmt.Println(err)
return
}
fmt.Println(string(line), isP)
}
}
4.使用ioutil读取整个文件
func main() {
content, err := ioutil.ReadFile("./t1.txt")
if err != nil {
return
}
fmt.Println(string(content))
}