Go入门之文件

以只读方式打开文件

Go 复制代码
package main

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

func main() {
	file, err := os.Open("./main.go")
	defer file.Close()
	if err != nil {
		fmt.Println(err)
		return
	}
	fmt.Println(file)
	var tempSlice = make([]byte, 128)
	var strSlice []byte
	for {
		n, errr := file.Read(tempSlice)
		if errr == io.EOF {
			fmt.Println("读取完成")
			break
		}
		if errr != nil {
			fmt.Println("失败")
		}
		fmt.Println(n)
		strSlice = append(strSlice, tempSlice[:n]...)
	}

	fmt.Println(string(strSlice))
}

第二种

Go 复制代码
package main

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

func main() {
	file, err := os.Open("./main.go")
	defer file.Close()
	if err != nil {
		fmt.Println(err)
		return
	}
	reader := bufio.NewReader(file)
	var fileStr string
	for {
		str, err := reader.ReadString('\n')
		if err == io.EOF {
			fileStr += str
			break
		}
		if err != nil {
			fmt.Println(err)
			return
		}
		fileStr += str
	}
	fmt.Println(fileStr)
}

注意读取结束后还可能会有残留数据

第三种

Go 复制代码
package main

import (
	"fmt"
	"io/ioutil"
)

func main() {
	file, err := ioutil.ReadFile("./main.go")
	if err != nil {
		fmt.Println(err)
	}
	fmt.Println(string(file))
}

第一种写入的方法

Go 复制代码
package main

import (
	"fmt"
	"os"
)

func main() {
	file, err := os.OpenFile("D:/test.txt", os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0666)
	defer file.Close()
	if err != nil {
		fmt.Println(err)
		return
	}
	for i := 0; i < 10; i++ {
		file.WriteString("w123\r\n")
	}
	file.Write([]byte("123123"))
}
Go 复制代码
package main

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

func main() {
	file, err := os.OpenFile("D:/test.txt", os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0666)
	defer file.Close()
	if err != nil {
		fmt.Println(err)
		return
	}
	writer := bufio.NewWriter(file)

	for i := 0; i < 10; i++ {
		writer.WriteString("你好")
		writer.Flush()
	}

}

第三种

Go 复制代码
package main

import (
	"fmt"
	"io/ioutil"
)

func main() {
	str := "hello"
	err := ioutil.WriteFile("D:/test.txt", []byte(str), 0666)
	if err != nil {
		fmt.Println(err)
		return
	}
}

可以通过ioutil包来复制文件,先读,再写,其他两种方式也可以

创建目录

Go 复制代码
err:=os.MkdirAll("./abc/a/b/c",0666)

删除

Go 复制代码
err:=os.Remove("aaa.txt")

os.RemoveAll 删除所有文件

os.Rename(xxx,yyy)重命名

相关推荐
巫山老妖30 分钟前
从零开发一个掘金自动发布 Skill,并上架 Clawhub
后端
颜酱1 小时前
图的数据结构:从「多叉树」到存储与遍历
javascript·后端·算法
雨中飘荡的记忆2 小时前
零拷贝技术深度解析
后端
uzong2 小时前
十年老员工的项目管理实战心得:有道有术
后端
Victor3564 小时前
MongoDB(31)索引对查询性能有何影响?
后端
Victor3564 小时前
MongoDB(30)如何删除索引?
后端
lizhongxuan4 小时前
多 Agent 协同机制对比
后端
IT_陈寒4 小时前
SpringBoot项目启动慢?5个技巧让你的应用秒级响应!
前端·人工智能·后端
树上有只程序猿5 小时前
2026低代码选型指南,主流低代码开发平台排名出炉
前端·后端
高端章鱼哥5 小时前
为什么说用OpenClaw对打工人来说“不划算”
前端·后端