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

相关推荐
qq_25183645710 分钟前
理发管理系统 —— 会员模块
开发语言·前端·python·flask
Dovis(誓平步青云)13 分钟前
几个方案来回选不定?做一个随时切换的候选推荐页
android·java·服务器·开发语言·javascript·数据库·智能化
郝学胜-神的一滴16 分钟前
AI 编程智能体 03:拆解当下主流智能体能力
开发语言·c++·人工智能·python·程序人生·游戏
言乐621 分钟前
Python文字审核模型
开发语言·windows·python·django·pygame
蜗牛互联网29 分钟前
从Barclays扩大Claude部署看受监管软件工程的责任重分配
java·大数据·人工智能·后端·软件工程
Cc.Y1 小时前
Java零基础入门:方法(函数)深度掌握
java·开发语言
老王爱玩车1 小时前
工具函数——清空输入缓冲区
c语言·开发语言·学习
奋发向前wcx1 小时前
CSP-J复赛模拟赛1 王晨旭补题 2026.10.2
java·开发语言
周杰伦fans1 小时前
轻量模型高并发推理优化技巧
开发语言·人工智能·c#
Frank_refuel1 小时前
【C++项目】手撕JRpc框架(单机怎么优化到分布式思想)
开发语言·c++