设为首页 收藏本站
查看: 1227|回复: 0

[经验分享] Golang的文件处理方式

[复制链接]

尚未签到

发表于 2018-9-20 07:32:47 | 显示全部楼层 |阅读模式
/*  
#!/usr/bin/env gorun
  
@author :yinzhengjie
  
Blog:http://www.cnblogs.com/yinzhengjie/tag/GO%E8%AF%AD%E8%A8%80%E7%9A%84%E8%BF%9B%E9%98%B6%E4%B9%8B%E8%B7%AF/
  
EMAIL:y1053419035@qq.com
  
*/
  

  
package main
  

  
import (
  
     "bufio"
  
     "fmt"
  
     "io"
  
     "os"
  
)
  

  
var (
  
     FileName string = "E:\\Code\\Golang\\Golang_Program\\文件处理\\我有一只小毛驴.txt"    //这是我们需要打开的文件,当然你也可以把它定义到从某个配置文件来获取变量。
  
     InputFile  *os.File    //变量 InputFile 是 *os.File 类型的。该类型是一个结构,表示一个打开文件的描述符(文件句柄)。
  
     InputError error    //我们使用 os 包里的 Open 函数来打开一个文件。如果文件不存在或者程序没有足够的权限打开这个文件,Open函数会返回一个错误,InputError变量就是用来接收这个错误的。
  
     Count int            //这个变量是我们用来统计行号的,默认值为0.
  
)
  

  
func main() {
  
     //InputFile,InputError = os.OpenFile(FileName,os.O_CREATE|os.O_RDWR,0644) //打开FileName文件,如果不存在就创建新文件,打开的权限是可读可写,权限是644。这种打开方式相对下面的打开方式权限会更大一些。
  
     InputFile, InputError = os.Open(FileName) //使用 os 包里的 Open 函数来打开一个文件。该函数的参数是文件名,类型为 string 。我们以只读模式打开"FileName"文件。
  
     if InputError != nil {    //如果打开文件出错,那么我们可以给用户一些提示,然后在推出函数。
  
         fmt.Printf("An error occurred on opening the inputfile\n" +
  
             "Does the file exist?\n" +
  
             "Have you got acces to it?\n")
  
         return // exit the function on error
  
     }
  
     defer InputFile.Close()        //defer关键字是用在程序即将结束时执行的代码,确保在程序退出前关闭该文件。
  
     inputReader := bufio.NewReader(InputFile) //我们使用 bufio.NewReader()函数来获得一个读取器变量(读取器)。我们可以很方便的操作相对高层的 string 对象,而避免了去操作比较底层的字节。
  
     for {
  
         Count += 1
  
         inputString, readerError := inputReader.ReadString('\n')  //我们将inputReader里面的字符串按行进行读取。
  
         if readerError == io.EOF {
  
             return  //如果遇到错误就终止循环。
  
         }
  
         fmt.Printf("The %d line is: %s",Count, inputString)    //将文件的内容逐行(行结束符'\n')读取出来。
  
     }
  
}
  

  

  

  
#以上代码执行结果如下:
  
The 1 line is: 歌曲:我有一只小毛驴
  
The 2 line is: 歌手:碧瑶
  
The 3 line is: 专辑:《瑶谣摇》
  
The 4 line is: 发行时间:2014-03-18
  
The 5 line is: 词:付林
  
The 6 line is: 曲:付林
  
The 7 line is: 歌词:
  
The 8 line is: 我有一只小毛驴
  
The 9 line is: 我从来也不骑
  
The 10 line is: 有一天我心血来潮骑着去赶集
  
The 11 line is: 我手里拿着小皮鞭
  
The 12 line is: 我心里很得意
  
The 13 line is: 不知怎么哗啦啦啦啦
  
The 14 line is: 摔了一身泥
  
The 15 line is: 我有一只小毛驴
  
The 16 line is: 我从来也不骑
  
The 17 line is: 有一天我心血来潮骑着去赶集
  
The 18 line is: 我手里拿着小皮鞭
  
The 19 line is: 我心里很得意
  
The 20 line is: 不知怎么哗啦啦啦啦
  
The 21 line is: 摔了一身泥
  
The 22 line is: 我有一只小毛驴 我从来也不骑
  
The 23 line is: 有一天我心血来潮 骑着去赶集
  
The 24 line is: 我手里拿着小皮鞭 我心里很得意
  
The 25 line is: 不知怎么哗啦啦啦 摔了一身泥
  
The 26 line is: 我有一只小毛驴 我从来也不骑
  
The 27 line is: 有一天我心血来潮 骑着去赶集
  
The 28 line is: 我手里拿着小皮鞭 我心里很得意
  
The 29 line is: 不知怎么哗啦啦啦 摔了一身泥
  
The 30 line is: 我手里拿着小皮鞭 我心里很得意



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-597739-1-1.html 上篇帖子: C/C++调用Golang 一 下篇帖子: 深入学习golang(5)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表