【Go】十六、文件操作

news/2024/4/29 16:24:50

文章目录

  • 1、打开和关闭文件
  • 2、IO
  • 3、一次性读文件
  • 4、带缓冲区的读文件
  • 5、写入文件
  • 6、文件复制

1、打开和关闭文件

package main
import("fmt""os"
)
func main(){//打开文件:file,err := os.Open("d:/Test.txt");if err != nil {//出错fmt.Println("文件打开出错,对应错误为:",err)}//没有出错,输出文件:fmt.Printf("文件=%v",file)//.........一系列操作//关闭文件:err2 := file.Close();if err2 != nil {fmt.Println("关闭失败")}
}

相关:

  • 打开文件,打开成功则返回一个文件对象
//函数
func Open(name string)(file *File,err error)
  • 关闭文件,使文件不能用于读写,返回可能出现的错误
//方法,限File对象调用
func(f *File) Close() error

2、IO

在这里插入图片描述

3、一次性读文件

在这里插入图片描述

  • 使用ioutil包的ReadFile方法,将整个文件读入到内存
  • 不适合大文件
package main
import("fmt""io/ioutil"
)
func main(){//读取文件:content,err := ioutil.ReadFile("d:/Test.txt")//返回内容为:[]byte,errif err != nil {//读取有误fmt.Println("读取出错,错误为:",err)}//如果读取成功,将内容显示在终端即可://fmt.Printf("%v",content)fmt.Printf("%v",string(content))
}

在上面的程序中不需要进行 Open\Close操作,因为文件的打开和关闭操作被封装在ReadFile函数内部了

4、带缓冲区的读文件

  • 带缓冲区
  • 适合读大文件
package main
import("fmt""os""bufio""io"
)
func main(){//打开文件:file,err := os.Open("d:/Test.txt")if err != nil {//打开失败fmt.Println("文件打开失败,err=",err)}//当函数退出时,让file关闭,防止内存泄露:defer file.Close()//创建一个流:reader := bufio.NewReader(file)//读取操作:for {str,err := reader.ReadString('\n')//读取到一个换行就结束if err == io.EOF {//io.EOF 表示已经读取到文件的结尾break}//如果没有读取到文件结尾的话,就正常输出文件内容即可:fmt.Println(str)}//结束:fmt.Println("文件读取成功,并且全部读取完毕")
}

5、写入文件

打开文件:
在这里插入图片描述

  • 参数一:文件路径

  • 参数二:文件打开模式,多选用 | 连接
    在这里插入图片描述

  • 参数三:权限控制(Linux下生效,Windows无效)

示例:

package main
import("fmt""os""bufio"
)
func main(){//写入文件操作://打开文件:file , err := os.OpenFile("d:/Demo.txt",os.O_RDWR | os.O_APPEND | os.O_CREATE,0666)if err != nil {//文件打开失败fmt.Printf("打开文件失败",err)return}//及时将文件关闭:defer file.Close()//写入文件操作:---》IO流---》缓冲输出流(带缓冲区)writer := bufio.NewWriter(file)for i := 0; i < 10;i++ {writer.WriteString("你好 Golang\n")} //流带缓冲区,要刷新流--->才会真正写入文件中:writer.Flush()
}

关于权限,不想算可以:

s :=os.FileMode(0666).String()
fmt.Println(s)

6、文件复制

package main
import("fmt""io/ioutil"
)
func main(){//定义源文件:file1Path := "d:/Demo.txt"//定义目标文件:file2Path := "d:/Demo2.txt"//对文件进行读取:content,err := ioutil.ReadFile(file1Path)if err != nil {fmt.Println("读取有问题!")return}//写出文件:err = ioutil.WriteFile(file2Path,content,0666)if err != nil {fmt.Println("写出失败!")}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.cpky.cn/p/11492.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

【讲解下Docker in Docker的原理与实践】

&#x1f308;个人主页:程序员不想敲代码啊&#x1f308; &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家&#x1f3c6; &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提…

iOS 利用URL解析技术,实现域名、路径、文件名和文件类型的获取

前言 在iOS开发中&#xff0c;我们经常需要处理URL&#xff0c;例如从网络下载数据、处理网页跳转等。为了更好地理解和操作URL&#xff0c;我们需要解析URL的各个组成部分&#xff0c;包括域名、路径、文件名和文件类型。本文将教你如何利用Swift的URL解析技术&#xff0c;轻…

【教程】iOS如何抓取HTTP和HTTPS数据包经验分享

&#x1f4f1; 在日常的App开发和研发调研中&#xff0c;对各类App进行深入的研究分析时&#xff0c;我们需要借助专业的抓包应用来协助工作。本文将介绍如何使用iOS手机抓包工具来获取HTTP和HTTPS数据包&#xff0c;并推荐一款实用的抓包应用——克魔助手&#xff0c;希望能够…

基于深度学习的机场航拍小目标检测系统(网页版+YOLOv8/v7/v6/v5代码+训练数据集)

摘要&#xff1a;在本博客中介绍了基于YOLOv8/v7/v6/v5的机场航拍小目标检测系统。该系统的核心技术是采用YOLOv8&#xff0c;并整合了YOLOv7、YOLOv6、YOLOv5算法&#xff0c;从而进行性能指标的综合对比。我们详细介绍了国内外在机场航拍小目标检测领域的研究现状、数据集处理…

TCP网络协议栈和Posix网络部分API总结

文章目录 Posix网络部分API综述TCP协议栈通信过程TCP三次握手和四次挥手&#xff08;看下图&#xff09;三次握手常见问题&#xff1f;为什么是三次握手而不是两次&#xff1f;三次握手和哪些函数有关&#xff1f;TCP的生命周期是从什么时候开始的&#xff1f; 四次挥手通信状态…

离散数学【详解】-自学考试湖北,争取做到识字都能看懂。

回顾8年前&#xff0c;我记得我大学高数没复习&#xff0c;考了23分。 今天公司代码写完了&#xff0c;明天清明节&#xff0c;写篇文章磨磨时间。 我的文章&#xff0c;没有一篇不是磨时间能好好写出来的。 ----我 先列标题&#xff0c;比如h1,h2,这些内容。然后往里面填字&a…