go语言—输出流Writer
- 输出流(
Output Stream
)就是将应用程序中的数据写出到外部资源; - go语言中
io
包下的Writer
接口表示输出流,只要实现这个接口就属于输出流; Writer
的源码:type Writer interface {
Write(p []byte) (n int, err error)
}
- 注意构建字节切片的时候如果需要读取文件,不要使用
os.Open()
,因为这种方式获取的文件是只读的,无法写入;需要使用os.OpenFile()
; os.OpenFile(name string, flag int, perm FileMode)
的参数:name
:文件名, flag
:操作方式, perm
:文件权限;- 其中
perm
参数:共4
位,第一位总为0
,第二位表示是否可读,第3
位表示是否可写;第4
位表示是否可执行; 例如:0000
不可读写 不可执行; 0001
不可读写 可执行; 0010
可写不可读,不可执行; 0100
可读不可写,不可执行;由于是二进制表示,所以可以将其转化为10进制
的数值,比如0100
可以转化为4
, 0111
为7
,0110
为6
;也可以记作: 4读2写1执行; 最多不大于7
,在表示权限的时候可以使用8进制
,来区分用户
/用户组
/其他用户
的分别权限;比如0764
表示文件所属用户可读可写可执行,用户组其他用户仅可读可写,其他非用户组用户仅可读; - 写入文件中的特殊字符,
\r\n
换行,\t
制表符,
package main
import (
"fmt"
"os"
)
func main() {
goWriter()
}
func goWriter() {
f, err := os.OpenFile("goWriter.txt", os.O_APPEND, 0764)
defer f.Close()
if err != nil {
fmt.Println("文件不存在,正在创建文件")
f, _ = os.Create("goWriter.txt")
}
fmt.Println("文件打开成功")
f.Write([]byte("要写入的内容1\r\n要写入的内容2\r\n\t要写入的内容3\r\n"))
f.WriteString("这一行是使用`f.WriteString()`写入的\r\n")
}