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

相关推荐
无敌最俊朗@13 小时前
C++-Qt-音视频-基础问题01
开发语言·c++
kyle~13 小时前
C++---万能指针 void* (不绑定具体数据类型,能指向任意类型的内存地址)
开发语言·c++
q***098013 小时前
Skywalking介绍,Skywalking 9.4 安装,SpringBoot集成Skywalking
spring boot·后端·skywalking
MediaTea13 小时前
Python 第三方库:TensorFlow(深度学习框架)
开发语言·人工智能·python·深度学习·tensorflow
vortex513 小时前
Bash Glob 通配符详细指南:从 POSIX 标准到高级用法
开发语言·bash
KdanMin13 小时前
Android MediaCodec 硬编解码实战:从Camera预览到H264流与回环渲染
android·开发语言
吴名氏.14 小时前
电子书《21天学通Java(第5版)》
java·开发语言·21天学通java
星释14 小时前
Rust 练习册 :深入探索XOR加密与流密码
开发语言·网络·rust
郝学胜-神的一滴14 小时前
Effective STL 第9条:C++容器元素删除技巧详解
开发语言·c++·程序人生·stl
提娜米苏14 小时前
Bash Shell脚本学习——唇读数据集格式修复脚本
开发语言·学习·bash