网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
func main() {
//默认路径是从项目的根路径开始的
filePath := "file/test.txt"
bytes, e := ioutil.ReadFile(filePath)
if e!=nil{
fmt.Printf("读取文件%v出错了\n",filePath)
return
}
fmt.Println(string(bytes))
}
说明:
3、写文件操作
1)、基本介绍-os.OpenFile 函数
- 第一个参数name:文件路径名称
- 第二个参数flag:文件打开的模式(可以组合)
- 第三个参数perm:权限控制(系统)
权限取值范围:0~7
0:没有任何权限
1:执行权限()如果文件是可执行文件,是可以运行的
2:写权限
3:写权限和执行权限
4:读权限
5:读权限和执行权限
6:读权限和写权限
7:读权限、写权限和执行权限
一般选择6
2)、向里文件数据
- 场景一
新建文件并写入数据
func main() {
//默认路径是从项目的根路径开始的
filePath := "file/test.txt"
//O\_CREATE创建和O\_EXCL存在报错 (保证文件是新建的)O\_WRONLY(只写,为了后面将内容写入文件)
file, e := os.OpenFile(filePath, os.O_CREATE|os.O_EXCL|os.O_WRONLY, 0666)
defer func() {
if i := file.Close();i!=nil{
fmt.Println("文件关闭失败!!")
}
}()
if e!=nil{
fmt.Println("文件创建失败!!")
return
}
writer := bufio.NewWriter(file)
nn, e := writer.Write([]byte("hello golang"))
if e !=nil{
fmt.Println("内容写入缓冲区失败!!")
return
}
e = writer.Flush()
if e !=nil{
fmt.Println("内容刷入文件失败!!")
return
}
fmt.Printf("文件写入了%v字节数据",nn)
}
- 场景二
覆盖上面写的内容
func main() {
//默认路径是从项目的根路径开始的
filePath := "file/test.txt"
file, e := os.OpenFile(filePath, os.O_WRONLY, 0666)
defer func() {
if i := file.Close();i!=nil{
fmt.Println("文件关闭失败!!")
}
}()
if e!=nil{
fmt.Println("文件创建失败!!")
return
}
writer := bufio.NewWriter(file)
nn, e := writer.Write([]byte("hello world"))
if e !=nil{
fmt.Println("内容写入缓冲区失败!!")
return
}
e = writer.Flush()
if e !=nil{
fmt.Println("内容刷入文件失败!!")
return
}
fmt.Printf("文件写入了%v字节数据",nn)
}
注:文件内容变为
hello worldg
后面都了个g,其实是覆盖了前面11个字节第12个没有覆盖,应为hello world只有11个字节
- 场景三
向文件中追加内容(不覆盖原先的内容)
func main() {
//默认路径是从项目的根路径开始的
filePath := "file/test.txt"
file, e := os.OpenFile(filePath, os.O_WRONLY | os.O_APPEND, 0666)
defer func() {
if i := file.Close();i!=nil{
fmt.Println("文件关闭失败!!")
}
}()
if e!=nil{
fmt.Println("文件创建失败!!")
return
}
writer := bufio.NewWriter(file)
nn, e := writer.Write([]byte("|||ABC||DEF"))
if e !=nil{
fmt.Println("内容写入缓冲区失败!!")
return
}
e = writer.Flush()
if e !=nil{
fmt.Println("内容刷入文件失败!!")
return
}
fmt.Printf("文件写入了%v字节数据",nn)
}
3)ioutil
func main() {
//默认路径是从项目的根路径开始的
filePath := "file/test.txt"
e := ioutil.WriteFile(filePath, []byte("hello golang"), 0666)
if e!=nil{
fmt.Println("写文件出错了")
}
}
文件内容变为:hello golang
4)文件其他操作
- 判断是否存在
func main() {
//默认路径是从项目的根路径开始的
filePath := "file/test.txt"
\_, e := os.Stat(filePath)
if e==nil || os.IsExist(e) {
fmt.Printf("%v exist !!\n",filePath)
}
if os.IsNotExist(e) {
fmt.Printf("%v not exist !!\n",filePath)
}
}
- 删除文件
func main() {
//默认路径是从项目的根路径开始的
filePath := "file/test.txt"
e := os.Remove(filePath)
if e!=nil{
fmt.Println("remove failed!!")
}
}
- 打印指定目录下 的所有文件路径名称
![img](https://img-blog.csdnimg.cn/img_convert/0bbd309a84245254c31a74bf7307d019.png)
![img](https://img-blog.csdnimg.cn/img_convert/04458e326cb3c4ef965c9a17d874aaad.png)
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**[需要这份系统化的资料的朋友,可以添加戳这里获取](https://bbs.csdn.net/topics/618658159)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
4598479)]
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**[需要这份系统化的资料的朋友,可以添加戳这里获取](https://bbs.csdn.net/topics/618658159)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**