• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

go读写文本文件

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

一、文件读取

1. 将整个文件读取到内存中

package main

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

func main() {
	//从命令行标记参数中获取文件路径
	fptr := flag.String("fpath", "test.txt", "the file path to read from")
	flag.Parse()
	data, err := ioutil.ReadFile(*fptr)
	if err != nil {
		fmt.Println("File reading error: ", err)
	}
	fmt.Println(string(data))
}

  

2. 分块读取文件

package main

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

func main() {
	fptr := flag.String("fpath", "test.txt", "the file path to read from")
	flag.Parse()

	f, err := os.Open(*fptr)
	if err != nil {
		log.Fatal(err)
	}
	defer func() {
		if err := f.Close(); err != nil {
			log.Fatal(err)
		}
	}()
	r := bufio.NewReader(f)
	b := make([]byte, 10)
	for {
		_, err := r.Read(b)
		if err != nil {
			if err == io.EOF {
				break
			}
			log.Fatal(err)
		}
		fmt.Println(string(b))
	}
}

  

3. 逐行读取文件

package main

import (
	"bufio"
	"flag"
	"fmt"
	"log"
	"os"
)

func main() {
	fptr := flag.String("fpath", "test.txt", "the file path to read from")
	flag.Parse()

	f, err := os.Open(*fptr)
	if err != nil {
		log.Fatal(err)
	}
	defer func() {
		if err = f.Close(); err != nil {
			log.Fatal(err)
		}
	}()
	s := bufio.NewScanner(f)
	for s.Scan() {
		fmt.Println(s.Text())
	}
	err = s.Err()
	if err != nil {
		log.Fatal(err)
	}
}

  

二、文件写入

1. 将字符串写入文件

package main

import (
	"fmt"
	"log"
	"os"
)

func main() {
	f, err := os.Create("test2.txt")
	if err != nil {
		log.Fatal(err)
	}
	defer func() {
		if err = f.Close(); err != nil {
			log.Fatal(err)
		}
	}()
	l, err := f.WriteString("Hello world")
	if err != nil {
		log.Fatal(err)
	}
	fmt.Println(l, " bytes written successfully!")
}

  

2. 将字节写入文件

package main

import (
	"fmt"
	"log"
	"os"
)

func main() {
	f, err := os.Create("test2.txt")
	if err != nil {
		log.Fatal(err)
	}
	defer func() {
		if err = f.Close(); err != nil {
			log.Fatal(err)
		}
	}()
	d := []byte{104, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100}
	l, err := f.Write(d)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Println(l, " bytes written successfully!")
}

  

3. 追加到文件

package main

import (
	"fmt"
	"log"
	"os"
)

func main() {
	f, err := os.OpenFile("test3.txt", os.O_APPEND|os.O_WRONLY, 0644)
	if err != nil {
		log.Fatal(err)
	}
	defer func() {
		if err = f.Close(); err != nil {
			log.Fatal(err)
		}
	}()
	_, err = fmt.Fprintln(f, "Hello, my name is jet.")
	if err != nil {
		log.Fatal(err)
	}
}

  

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
[Go]Go语言实现post请求时发送header头信息发布时间:2022-07-10
下一篇:
GO学习之函数的进阶发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap