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)重命名

相关推荐
码外生活5 分钟前
🎥 手搓一套直播高并发环境!一个后端小白从 0 到 1 的搭建笔记
后端·spring cloud
无忧.芙桃13 分钟前
C++内存管理
c语言·开发语言·c++·青少年编程
Patrick在香港15 分钟前
Python 分析香港 AQHI 归档 1644 天:同一天的空气,早上 8 点报 3,下午 5 点报 10
开发语言·python·数据分析·api·restful·数据可视化·开放数据
晴天1618 分钟前
JavaScript 与 Java 垃圾回收机制对比
java·开发语言·javascript
Lyra_Infra18 分钟前
记一次麒麟 Linux 下达梦数据库 (DM8) 部署与 MySQL 命令行无界面迁移踩坑指南
数据库·后端·dba
金金计较.19 分钟前
Go语言-2
开发语言·算法·golang
Daemonkey21 分钟前
苦 Elasticsearch/Prometheus 久矣?试试 Rust 打造的云原生可观测新星:OpenObserve
后端
ThinkerQAQ_24 分钟前
并发编程(零):并发问题与讨论范围
后端
3Q工具箱 - BraggTroy27 分钟前
Python + PyInstaller 实战:从零打造 10 个 Windows 桌面小工具(附全部踩坑记录与核心代码)
开发语言·windows·python
减瓦30 分钟前
被吹上天的 JWT,为什么主流网站一个都不用
后端