Golang 中对文件 file 操作方法总结

来源:互联网 发布:六度分隔理论 知乎 编辑:程序博客网 时间:2024/05/29 09:49

创建文件

package mainimport (    "fmt"    "log"    "os")func main() {    file, err := os.Create("file.log")    if err != nil {        log.Fatalln(err)    }    fmt.Println(file)}

判断文件是否存在

package mainimport (    "fmt"    "log"    "os")func main() {    _, err := os.Stat("file.log")    if err != nil && !os.IsNotExist(err) {        log.Fatalln(err)    }    if os.IsNotExist(err) {        fmt.Println("文件不存在")        return    }    fmt.Println("文件存在")}

创建目录

package mainimport (    "log"    "os")func main() {    // 创建当个目录    err := os.Mkdir("tmp", 0755)    if err != nil {        log.Fatalln(err)    }    // 递归创建目录    err = os.MkdirAll("tmp/tmp1/tmp2", 0755)    if err != nil {        log.Fatalln(err)    }}

写入文件

package mainimport (    "log"    "os")func main() {    // 打开一个文件    // os.O_CREATE 表示文件不存在就会创建    // os.O_APPEND 表示以追加内容的形式添加    // os.O_WRONLY 表示只写模式    // os.O_RDONLY 表示只读模式    // os.O_RDWR 表示读写模式    // os.O_EXCL used with O_CREATE, file must not exist    // os.O_SYNC I/O同步的方式打开    // os.O_TRUNC if possible, truncate file when opened.    file, err := os.OpenFile("file.log", os.O_CREATE|os.O_WRONLY, 0600)    if err != nil {        log.Fatalln(err)    }    // 写入字节流    n, err := file.Write([]byte("你好"))    if err != nil {        log.Fatalln(err)    }    // 写入字符串    m, err := file.WriteString(",世界")    if err != nil {        log.Fatalln(err)    }    // 在指定的偏移处(offset)写入内容    _, err = file.WriteAt([]byte("!"), int64(n+m))    if err != nil {        log.Fatalln(err)    }}

读取文件按字节读取

package mainimport (    "fmt"    "log"    "os")func main() {    file, err := os.OpenFile("file.log", os.O_RDONLY, 0600)    if err != nil {        log.Println(err)    }    // 按字节读取    data := make([]byte, 100)    count, err := file.Read(data)    if err != nil {        log.Println(err)    }    fmt.Printf("read %d bytes: %q\n", count, data[:count])    // output: read 14 bytes: "你好,世界!"}

读取文件一行行读取

package mainimport (    "bufio"    "fmt"    "io"    "log"    "os")func main() {    file, err := os.OpenFile("file.log", os.O_RDONLY, 0600)    if err != nil {        log.Fatalln(err)    }    buff := bufio.NewReader(file)    for i := 1; ; i++ {        line, err := buff.ReadBytes('\n')        if err != nil && err != io.EOF {            log.Fatalln(err)        }        fmt.Printf("%d line: %s", i, string(line))        // 文件已经到达结尾        if err == io.EOF {            break        }    }    // output: 1 line: 你好,世界!    fmt.Println()}

读取文件一次读取全部

package mainimport (    "fmt"    "io/ioutil"    "log")func main() {    data, err := ioutil.ReadFile("file.log")    if err != nil {        log.Fatalln(err)    }    fmt.Println(string(data))    // output: 你好,世界!}
0 0
原创粉丝点击