【6】包注意事项&文件操作

  1. 包的路径从GOPATH/src后面的路径开始写起,路径分隔符用/
  2. 想被别的包包调用,标识符是字母都要大写
  3. 导入包时可以指定别名
  4. 导入包但是不想使用包内的标识符,需要使用匿名导入
  5. 每个包导入的时候会自动执行一个名为init()的函数,它没有参数也没有返回值,并且不能手动调用

文件操作

按行读取
package main

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

func main() {
	file, err := os.Open("test.txt")
	if err != nil {
		fmt.Println("读取文件出错", err)
	}
	defer file.Close()

	reader := bufio.NewReader(file)
	for {
		line, err := reader.ReadString('\n')
		if err == io.EOF{
			fmt.Println("读取完毕")
			break
		}
		if err != nil {
			fmt.Println("读取文件出错", err)
			return
		}
		fmt.Print(line)
	}
}
读取全部内容
package main

import (
	"fmt"
	"io/ioutil"
	"reflect"
	"strings"
)

func main() {
	content, err := ioutil.ReadFile("test.txt")
	if err != nil {
		fmt.Println("读取文件出错", err)
		return
	}
	fmt.Println(reflect.TypeOf(content)) // []uint8
	res := string(content) // 转为字符串类型
	s := strings.Split(res,"\n")
	for _,v := range s{
		fmt.Println(v)
	}
}
先写入内存,再flush到文件
package main

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

func main() {
	file, err := os.OpenFile("new.txt", os.O_WRONLY|os.O_CREATE, 0644)
	if err != nil {
		fmt.Println("打开文件出错", err)
		return
	}
	defer file.Close()

	writer := bufio.NewWriter(file)
	writer.WriteString("写入字符串")
	writer.Flush()
}
直接写入文件
package main

import (
	"fmt"
	"os"
)

func main() {
	file, err := os.OpenFile("new.txt", os.O_CREATE|os.O_TRUNC|os.O_WRONLY, 0666)
	if err != nil {
		fmt.Println("open file failed, err:", err)
		return
	}
	defer file.Close()
	
	str := "hello 沙河"
	file.Write([]byte(str))       //写入字节切片数据
	file.WriteString("hello 小王子") //直接写入字符串数据
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值