Go语言标准库file

作者: ropon 分类: Go 发布时间: 2019-11-20 13:46
package main

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

//文件操作
func main() {
	//os.Open() 函数打开文件 返回*File和err
	file, err := os.Open("./config.ini")
	if err != nil {
		fmt.Println("文件打开失败, 错误信息: ", err)
		return
	}
	fmt.Println(file)
	defer file.Close()

	//读文件
	//func (f *os.File) Read(b[]byte) (n int, err error)
	//var tmp = make([]byte, 128)
	//n, err := file.Read(tmp)
	//if err == io.EOF {
	//	fmt.Println("已读到文件末尾")
	//	return
	//}
	//if err != nil {
	//	fmt.Println("读取文件失败, 错误信息: ", err)
	//	return
	//}
	//fmt.Printf("读取了%d字节数据", n)
	//fmt.Println(string(tmp[:n]))

	//循环读取
	//var content []byte
	//var tmp = make([]byte, 128)
	//for {
	//	n, err := file.Read(tmp)
	//	if err == io.EOF {
	//		fmt.Println("已读到文件末尾")
	//		break
	//	}
	//	if err != nil {
	//		fmt.Println("读取文件失败, 错误信息: ", err)
	//		return
	//	}
	//	content = append(content, tmp[:n]...)
	//}
	//fmt.Println(string(content))

	//bufio按行读取
	//var ss string
	//reader := bufio.NewReader(file)
	//for {
	//	line, err := reader.ReadString('\n') //字符分隔
	//	if err == io.EOF {
	//		fmt.Println("已读到文件末尾")
	//		break
	//	}
	//	if err != nil {
	//		fmt.Println("读取文件失败, 错误信息: ", err)
	//		return
	//	}
	//	ss = ss + line
	//}
	//fmt.Println(ss)

	//ioutil读取整个文件
	content, err := ioutil.ReadFile("./config.ini")
	if err != nil {
		fmt.Println("读取文件失败, 错误信息: ", err)
		return
	}
	fmt.Println(string(content))
}

// 写入操作

package main

import (
	"fmt"
	"io/ioutil"
)

//文件写入
//os.OpenFile(name string, flag int, perm FileMode) (*File, error) 以指定模式打开文件
//name 需要操作的文件名
//flag 打开模式

//os.O_WRONLY 只写
//os.O_CREATE 创建文件
//os.O_RDONLY 只读
//os.O_RDWR 读写
//os.O_TRUNC 清空
//os.O_APPEND 追加

//perm 文件权限 一个八进制数 r 04 w 02 x 01

func main() {
	//file, err := os.OpenFile("test.txt", os.O_CREATE|os.O_TRUNC|os.O_WRONLY, 0666)
	//if err != nil {
	//	fmt.Println("打开文件异常, 报错: ", err)
	//	return
	//}
	//defer file.Close()
	//str := "优秀,非常优秀\n"
	//file.Write([]byte(str))  // 通过字节切片写入文件
	//file.WriteString("我们都很优秀") //直接将字符串写入文件

	//bufio.NewWriter
	//writer := bufio.NewWriter(file)
	//for i := 0; i < 10; i ++ {
	//	writer.WriteString("bufio你好,中国\n") // 先将数据写入缓存
	//}
	//writer.Flush() // 将缓存的内容写入文件

	//ioutil.WriteFile
	str := "ioutil优秀,非常优秀\n"
	err := ioutil.WriteFile("test.txt", []byte(str), 0666)
	if err != nil {
		fmt.Println("打开文件异常, 报错: ", err)
		return
	}
}

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!