上市> 正文

让我们一起聊聊文件的操作

时间: 2023-08-03 03:50:52 来源: 今日头条
文件【1】文件是什么?

文件是保存数据的地方,是数据源的一种,比如大家经常使用的word文档、txt文件、excel文件、jpg文件...都是文件。文件最主要的作用就是保存数据,它既可以保存一张图片,也可以保持视频,声音...

【2】os包下的File结构体封装了对文件的操作:【3】File结构体---打开文件和关闭文件:

(1)打开文件,用于读取:(函数)

传入一个字符串(文件的路径),返回的是文件的指针,和是否打开成功


(相关资料图)

(2)关闭文件:(方法)

使文件不能用于读写。它返回可能出现的错误

【4】案例:
package mainimport("fmt""os")func main()  {//打开文件:file,err := os.Open("D:/test.txt")if err != nil {fmt.Println("文件打开出错,对应错误为:",err)}//没有出错,输出文件:fmt.Println("文件=v%",file)//.........一系列操作//关闭文件:err2 := file.Close()if err2 != nil {fmt.Println("关闭失败!")}}
io的引入【1】IO流对文件进行操作:读取文件(一次性)

【1】读取文件的内容并显示在终端(使用ioutil一次将整个文件读入到内存中),这种方式适用于文件不大的情况。相关方法和函数(ioutil.ReadFile)

【2】案例:

package mainimport("fmt""io/ioutil")func main()  {//备注:在下面的程序中不需要进行 Open\Close操作,因为文件的打开和关闭操作被封装在ReadFile函数内部了//读取文件:content,err := ioutil.ReadFile("D:/test.txt")if err != nil {fmt.Println("读取错误,错误为:",err)}//如果读取成功,将内容显示在终端即可://fmt.Printf("%v",content)fmt.Printf("%v",string(content))}
读取文件(带缓冲区)

【1】读取文件的内容并显示在终端(带缓冲区的方式-4096字节),适合读取比较大的文件,使用os.Open,file.Close,bufio.NewReader(),reader.ReadString函数和方法

【2】案例:

package mainimport("fmt""io""os""bufio")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")//io.EOF 表示已经读取到文件的结尾if err == io.EOF {break}//如果没有读取到文件结尾的话,就正常输出文件内容即可:fmt.Println(str)}//结束:fmt.Println("文件读取成功,并且全部读取完毕")}
写入文件

【1】打开文件操作:

三个参数含义:

(1)要打开的文件的路径

(2)文件打开模式(可以利用"|"符号进行组合)

(3)权限控制(linux/unix系统下才生效,windows下设置无效)- 0666

【2】案例:

package mainimport("fmt""os""bufio")func main()  {//写入文件操作://打开文件:file,err := os.OpenFile("D:/test.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("你好 菜园子\n")}//流带缓冲区,刷新数据--->真正写入文件中:writer.Flush()s := os.FileMode(0666).String()fmt.Println(s)}
文件复制操作

案例

package mainimport("io/ioutil""fmt")func main()  {//定义源文件:filePath := "D:/test.txt"//定义目标文件:newPath := "D:/test_copy.txt"//对文件进行读取:content,err := ioutil.ReadFile(filePath)if err != nil {fmt.Printf("打开文件失败",err)return} //写出文件:err = ioutil.WriteFile(newPath,content,0666)if err != nil {fmt.Println("写出失败")}}

关键词:

责任编辑:QL0009

为你推荐

关于我们| 联系我们| 投稿合作| 法律声明| 广告投放

版权所有 © 2020 跑酷财经网

所载文章、数据仅供参考,使用前务请仔细阅读网站声明。本站不作任何非法律允许范围内服务!

联系我们:315 541 185@qq.com