golang中的文件读写

栏目: Go · 发布时间: 6年前

内容简介:版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012314976/article/details/79838084

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012314976/article/details/79838084

正文

读取文件全部内容

package main

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

func main() {
    f, err := os.Open("input.txt")
    if err != nil {
        fmt.Println("os Open error: ", err)
        return
    }
    defer f.Close()

    //读取文件全部内容
    b, err := ioutil.ReadAll(f)
    if err != nil {
        fmt.Println("ioutil ReadAll error: ", err)
        return
    }

    fmt.Println("content: ", string(b))
}
package main

import (
    "fmt"
    "io/ioutil"
)

func main() {
    //读取文件全部内容
    b, err := ioutil.ReadFile("input.txt")
    if err != nil {
        fmt.Println("ioutil ReadFile error: ", err)
        return
    }

    fmt.Println("content: ", string(b))
}

使用ioutil.WriteFile写入文件

func WriteFile(filename string, data []byte, perm os.FileMode) error

WriteFile将data写入到filename指定的文件中。如果文件不存在,WriteFile将会创建该文件,且文件的权限是perm;如果文件存在,先清空文件内容再写入。

package main

import (
    "io/ioutil"
    "fmt"
)

func main() {
    content := []byte("hello golang")
    //将指定内容写入到文件中
    err := ioutil.WriteFile("output.txt", content, 0666)
    if err != nil {
        fmt.Println("ioutil WriteFile error: ", err)
    }
}

获取文件信息

package main

import (
    "fmt"
    "os"
)

func main() {
    f, err := os.Open("input.txt")
    if err != nil {
        fmt.Println("os Open error: ", err)
        return
    }
    defer f.Close()

    stat, err := f.Stat()
    if err != nil {
        fmt.Println("f Stat error: ", err)
    }

    fmt.Println("name: ", stat.Name())
    fmt.Println("size: ", stat.Size())
}

运行结果

name:  input.txt
size:  18

按行读取文件

package main

import (
    "fmt"
    "os"
    "bufio"
    "io"
)

func main() {
    f, err := os.Open("input.txt")
    if err != nil {
        fmt.Println("os Open error: ", err)
        return
    }
    defer f.Close()

    br := bufio.NewReader(f)
    for {
        line, _, err := br.ReadLine()
        if err == io.EOF {
            break
        } else if err != nil {
            fmt.Println("br ReadLine error: ", err)
            return
        }

        fmt.Println("line: ", string(line))
    }
}

按行写入文件

os.Open("filename") ,这个函数的原理其实是这样的 OpenFile(name, O_RDWR|O_CREATE|O_TRUNC, 0666) ,O_RDWR也就是说用读写的权限,O_CREATE然后文件存在忽略,不存在创建它,O_TRUNC文件存在截取长度为0

package main

import (
    "fmt"
    "os"
    "bufio"
)

func main() {
    f, err := os.Create("output.txt")
    if err != nil {
        fmt.Println("os Create error: ", err)
        return
    }
    defer f.Close()

    content := map[string]string{
        "hello": "111",
        "world": "222",
    }
    bw := bufio.NewWriter(f)
    for k, v := range content {
        bw.WriteString(k + ":" + v + "\n")
    }
    bw.Flush()
}

追加文件内容

package main

import (
    "fmt"
    "os"
)

func main() {
    f, err := os.OpenFile("output.txt", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0777)
    if err != nil {
        fmt.Println("os OpenFile error: ", err)
        return
    }
    defer f.Close()

    f.WriteString("another content")
}

按字节读取文件内容

package main

import (
    "fmt"
    "os"
    "io"
)

func main() {
    f, err := os.Open("input.txt")
    if err != nil {
        fmt.Println("os Open error: ", err)
        return
    }
    defer f.Close()

    for {
        b := make([]byte, 4)
        n, err := f.Read(b)//读取至多4个字节的内容
        if err == io.EOF {
            break
        } else if err != nil {
            fmt.Println("f Read error: ", err)
            return
        }
        b = b[:n]

        fmt.Printf("read length=%d, content=%s\n", n, string(b))
    }
}

运行结果

read length=4, content=1234
read length=4, content=5678
read length=2, content=90

参考


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Python编程无师自通

Python编程无师自通

[美] 科里·奥尔索夫(Cory Althoff) / 宋秉金 / 人民邮电出版社 / 2019-1-1 / 59

畅销Python编程类入门书,美国亚马逊Kindle编程类排行榜榜一。 作者从文科毕业,通过自学编程转行为专业程序员,在硅谷工作多年后成功技术创业。本书不仅教读者如何使用Python语言编程,还会介绍其他书中所忽略的、编程初学者应该了解并掌握的其他所有知识点。 本书作者是一名自学成才的程序员,经过一年的自学,掌握了编程技能并在eBay找到了一份软件工程师的工作。本书是作者结合个人经验写......一起来看看 《Python编程无师自通》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具