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 分钟前
SpringBoot核心注解与配置详解
java·spring boot·后端
lingggggaaaa22 分钟前
安全工具篇&Go魔改二开&Fscan扫描&FRP代理&特征消除&新增扩展&打乱HASH
学习·安全·web安全·网络安全·golang·哈希算法
菩提树下的凡夫24 分钟前
Python 环境管理工具
开发语言·python
索荣荣40 分钟前
JavaToken实战指南:从原理到应用
开发语言·python
zho_uzhou1 小时前
c++ imgui implot绘图使用示例 visual studio
开发语言·c++·visual studio
dyyx1111 小时前
C++中的过滤器模式
开发语言·c++·算法
2301_818732061 小时前
项目启动报错,错误指向xml 已解决
xml·java·数据库·后端·springboot
星夜泊客1 小时前
C# 基础:为什么类可以在静态方法中创建自己的实例?
开发语言·经验分享·笔记·unity·c#·游戏引擎
CappuccinoRose1 小时前
React框架学习文档(七)
开发语言·前端·javascript·react.js·前端框架·reactjs·react router
消失的旧时光-19431 小时前
从拷贝到移动:C++ 移动构造与移动赋值是怎么被逼出来的?(附完整示例)
开发语言·c++