Go语言之文件读取与终端读取

2020-04-27  本文已影响0人  CaiGuangyin

从文件一次性读取全部数据

// 从文件读取数据
func ReadFile() {
    file, err := os.Open("src/go_xuexi_190121/day07/e2_bufio/main/test.txt")
    if err != nil {
        fmt.Println("open file failed, error: ", err)
        return
    }
    defer file.Close()
    str, err := ioutil.ReadAll(file)
    if err != nil {
        fmt.Println("error: ", err)
        return
    }
    fmt.Println("文件内容:", string(str))
}

直接读取文件全部内容

// 直接读取文件内容
func ZhiRead() {
    str, err := ioutil.ReadFile("src/go_xuexi_190121/day07/e2_bufio/main/test.txt")
    if err != nil {
        fmt.Println("read file failed, error: ", err)
        return
    }
    fmt.Printf("文件内容: %s", string(str))
}

逐行读取文件内容

// 利用Bufio读取文件, 这种方法是逐行读取文件内容。
func BufReadFile() {
    file, err := os.Open("D:\\Goproject\\src\\go_xuexi_190121\\day07_文件操作_命令行参数\\e2_bufio\\main\\test.txt")
    if err != nil {
        if err == io.EOF {
            fmt.Println("read file completed.")
            return
        } else {
            fmt.Println("open file failed, error: ", err)
            return
        }
    }
    defer file.Close()
    reader := bufio.NewReader(file) // 传入文件句柄
    // 必须循环,否则只读取一行数据
    for {
        str, err := reader.ReadString('\n') // 此方法的本质是调用 reader.ReadBytes() 方法,然后将字节数组转换成字符串:string(bytes)
        if err != nil {
            if err == io.EOF {
                fmt.Println("read file finished.")
                return
            } else {
                fmt.Println("read file failed, error: ", err)
                return
            }
        }
        fmt.Printf("%s", str)
        fmt.Println("#*****************************************************************#" )
    }
}

从标准输入读取数据

// 从标准输入读取数据
func ReadStdin() {
    reader := bufio.NewReader(os.Stdin)
    str, err := reader.ReadString('\n')
    if err != nil {
        fmt.Println("error: ", err)
    }
    fmt.Printf(">>> %s\n", str)
}
上一篇 下一篇

猜你喜欢

热点阅读