文章74
标签2
分类7

章节9_04_Writer

一. 输入流

  • 输入流就是把程序中数据写出到外部资源
  • Go语言标准库中输出流是Writer接口
// Writer is the interface that wraps the basic Write method.
//
// Write writes len(p) bytes from p to the underlying data stream.
// It returns the number of bytes written from p (0 <= n <= len(p))
// and any error encountered that caused the write to stop early.
// Write must return a non-nil error if it returns n < len(p).
// Write must not modify the slice data, even temporarily.
//
// Implementations must not retain p.
type Writer interface {
    Write(p []byte) (n int, err error)
}

二.代码操作

  • 注意:输入流时不要使用os.Open()因为这种方式获取的文件是只读的
    fp := "D:/go.txt"
    /*
    第三个参数表示文件权限
    第 1 位在权限中总是为 0
    第 2 位为 0 表示文件不可以被读, 为 1 表示可以被读
    第 3 位为 0 表示文件不可以被写, 为 1 表示可以被写
    第 4 位为 0 表示文件不可以被执行, 为 1 表示可以被执行
    整理如下:
       0(0000): 不可读写,不能被执行
       1(0001): 不可读写,能被执行
       2(0010): 可写不可读,不能被执行
       3(0011): 可写不可读,能被执行
       4(0100): 可读不可写,不能被执行
       5(0101): 可读不可写,能被执行
       6(0110): 可读写,不能执行
       7(0111): 可读写,可执行

    0666:
    第一个 0 表示这个数是 八进制
    第一个 6 表示文件拥有者有读写权限,但没有执行权限
    第二个 6 表示文件拥有者同组用户有读写权限,但没有执行权限
    第三个 6 表示其它用户有读写权限,但没有执行权限

     */

    //第二个参数表示文件内容追加
    //第三个参数表示创建文件时文件权限
    f, err := os.OpenFile(fp, os.O_APPEND, 0660)
    defer f.Close()
    if err != nil {
        fmt.Println("文件不存在,创建文件")
        f, _ = os.Create(fp)
    }

    /*
    内容中识别特殊字符
    \r\n 换行
    \t 缩进
     */

    /*
    使用文件对象重写的Writer接口,参数是[]byte
     */
    f.Write([]byte("使用Writer接口写数据\r\n"))

    /*
    使用stringWriter接口的方法,参数是字符串,使用更方便
     */
    f.WriteString("写了\t一段\r\n内容123")
    fmt.Println("程序执行结束")

0 评论