栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Go语言

golang 的文件写入和读取(Write()、WriteString(),bufio包:WriteString()、flush(), ioutil 包:WriteFile()、ReadFile())

Go语言 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

golang 的文件写入和读取(Write()、WriteString(),bufio包:WriteString()、flush(), ioutil 包:WriteFile()、ReadFile())

文章目录
  • 1. os包
    • 1.1 Write()/WriteString()方法
      • 语法
      • 完整示例
    • 1.2 Read()方法
      • 语法
      • 完整示例
  • 2. bufio包
    • 2.1 WriteString()/flush()方法
      • 语法
      • 完整示例
    • 2.2 ReadLine()方法
      • 语法
      • 完整示例
  • 3. ioutil 包
    • 3.1 WriteFile()
      • 语法
      • 完整示例
    • 3.2 ReadFile()
      • 语法
      • 完整示例

1. os包 1.1 Write()/WriteString()方法 语法
  • 打开文件
func OpenFile(name string, flag int, perm FileMode) (*File, error)
  • 写入
func (f *File) WriteString(s string) (n int, err error)

或

func (f *File) Write(b []byte) (n int, err error)
完整示例
package main

import (
	"fmt"
	"os"
)

func main() {
	info := "# 人员名单rn- 刘备刘玄德rn- 关羽关云长rn- 张飞张翼德"
	path := "nameList.md"
    writeFile(info,path)
    //readFile(path)
}

func writeFile(info string,path string) {

	fi, err := os.OpenFile(path, os.O_CREATE|os.O_WRONLY|os.O_TRUNC, 0664)
	if err != nil {
		fmt.Println(err)
		return
	}
	defer fi.Close()

	_,err = fi.WriteString(info)
	if err != nil {
		return
	}

	//_,err = fi.Write([]byte(info))
	//if err != nil {
	//	return
	//}
}
  • 显示结果
1.2 Read()方法 语法
func (f *File) Read(b []byte) (n int, err error)
完整示例
  • 代码
package main

import (
	"fmt"
	"os"
)

func main() {
	//info := "# 人员名单rn- 刘备刘玄德rn- 关羽关云长rn- 张飞张翼德"
	path := "nameList.md"
    //writeFile(info,path)
    readFile(path)
}

func readFile(path string) {

	fi, err := os.Open(path)
	if err != nil {
		fmt.Println( err)
		return
	}
	defer fi.Close()

	var tmp = make([]byte, 100)
	n,err := fi.Read(tmp)
	if err != nil {
		return
	}
	fmt.Printf("%s",tmp[:n])

}
  • 结果显示
# 人员名单
- 刘备刘玄德
- 关羽关云长
- 张飞张翼德
2. bufio包 2.1 WriteString()/flush()方法 语法
  • 创建writer实例
func NewWriter(w io.Writer) *Writer
  • 将信息写入缓存
func (b *Writer) WriteString(s string) (int, error)
  • 将缓冲写入文件
func (b *Writer) Flush() error
完整示例
  • 代码
import (
	"bufio"
	"fmt"
	"io"
	"os"
)

func main() {
	info := "# 人员名单rn- 刘备刘玄德rn- 关羽关云长rn- 张飞张翼德"
	path := "nameList.md"
    writeFile(info,path)
}

func writeFile(path string,info string) {
	fi, err := os.OpenFile(path, os.O_CREATE|os.O_WRONLY|os.O_TRUNC, 0664)
	if err != nil {
		fmt.Println( err)
		return
	}
	defer fi.Close()
	//创建新Writer,其缓冲区有默认大小
	writer := bufio.NewWriter(fi)
	//将信息写入缓存
	_,err = writer.WriteString(info)
	if err != nil {
		return
	}
	//将缓存数据写入文件
	err = writer.Flush()
	if err != nil {
		return
	}
}
  • 显示结果
    同上例
2.2 ReadLine()方法 语法
  • 打开文件
func OpenFile(name string, flag int, perm FileMode) (*File, error)
  • 创建reader
func NewReader(rd io.Reader) *Reader
  • 读取结果
func (b *Reader) ReadLine() (line []byte, isPrefix bool, err error)
完整示例
  • 代码示例
package main

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

func main() {
	//info := "# 人员名单rn- 刘备刘玄德rn- 关羽关云长rn- 张飞张翼德"
	path := "nameList.md"
    //writeFile(info,path)
    readFile(path)
}

func readFile(path string) {
	fi, err := os.OpenFile(path,os.O_RDONLY,0664)
	if err != nil {
		fmt.Printf("Error: %sn", err)
		return
	}
	defer fi.Close()
	reader := bufio.NewReader(fi)
	for {
		lineString, _,err := reader.ReadLine()
		if err == io.EOF {
			break
		}
		fmt.Println(string(lineString))
	}
}
  • 结果
# 人员名单
- 刘备刘玄德
- 关羽关云长
- 张飞张翼德
3. ioutil 包 3.1 WriteFile() 语法
func WriteFile(filename string, data []byte, perm fs.FileMode) error
完整示例
  • 代码
package main

import (
	"fmt"
	"io/ioutil"
)

func main() {
	info := "# 人员名单rn- 刘备刘玄德rn- 关羽关云长rn- 张飞张翼德"
	path := "nameList.md"
    writeFile(info,path)
}

func writeFile(info string,path string,) {
	err := ioutil.WriteFile(path,[]byte(info), 0664)
	if err != nil {
		fmt.Println(err)
		return
	}
}
3.2 ReadFile() 语法
func ReadFile(filename string) ([]byte, error)
完整示例
  • 代码
package main

import (
	"fmt"
	"io/ioutil"
)

func main() {
	//info := "# 人员名单rn- 刘备刘玄德rn- 关羽关云长rn- 张飞张翼德"
	path := "nameList.md"
    readFile(path)
}

func readFile(path string,) {
	info,err := ioutil.ReadFile(path)
	if err != nil {
		fmt.Println(err)
		return
	}
	fmt.Printf("%s",info)
}
  • 结果
# 人员名单
- 刘备刘玄德
- 关羽关云长
- 张飞张翼德
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/990878.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号