美文网首页
GO语言学习---chapter12

GO语言学习---chapter12

作者: N_O_W | 来源:发表于2018-06-28 19:55 被阅读0次

第12章  文件读写  2018.06.28-2018.06.29

主要涉及的库有  os  io  bufio

打开文件:

inputFile,err := os.Open(filename)  //这里inputFile将会是一个*File的指针,err返回打开文件时的错误信息

打开文件后,一定要注意需要关闭文件,通过下面的语句来实现

defer inputFile.Close()

然后创建一个reader

inputReader := bufio.NewReader(inputFile)  //建返回一个Reader指针

《1》读取一行:  line := inputReader.ReadLine()

《2》按照分隔符读取:  str ,err := inputReader.ReadString('\n')

《3》读取到缓冲区 

            buffer := make([]byte,1024)  //创建缓冲区

            n , error := inputReader.Read(buffer) //将数据读取到缓冲区,n表示读取到的字节数,error表示错误信息

《4》读取整个文件到缓冲区

            buffer,error := ioutil.ReadFile(inputFileName) //一次性将文件读取到缓冲区

            err := ioutil.WriteFile(outFileName,buffer,0x644) //将缓冲区的数据写到文件中

《5》从文件中读取一行到指定的变量中

          fmt.Fscanln(file,&var1,&var2,&var3)

《6》 读取压缩文件

            import "compress/gzip"    //引入压缩包

            file,err := os.Open(filename)    //打开文件,获取*File

            fz , err := gzip.NewReader(file)  //获取gzip Reader实例

            r ,  err := bufio.NewReader(fz)    //获取*Reader实例

            接下来的步骤和正常的读取步骤一样

《7》 文件写的过程

            outputFile, outputError := os.OpenFile(filename,O_WRITEONLY|O_CREATE,0666) //打开文件,设置打开方式及读写权限

            defer outputFile.Close()  //记得程序退出时关闭文件

            outputWriter := bufio.NewWriter(outputFile)  //获取一个*Writer

            outputWriter.WriteString("fuck you !") // 写入数据

            outputWriter.Flush()

《8》读取整个文件的过程可以使用ioutil.ReadFile

          写入整个文件的过程可以使用ioutil.WriteFile

《9》文件的复制  ioutil.Copy(dst,src)  //直接将src复制到dst ,这里需要注意参数的位置

《10》flag包可以帮助我们处理命令行参数

            type flag struct {

                Name string  //name as it appears on commandline

                Usage  string  // help message

                Value  Value  // value as set

                DefValue string  // default value (as text) ; for usage message

            }

获取命令行参数的个数:flag.NArg() 

获取第i个参数: flag.Arg(i)

《11》JSON 文件格式的读取(重点关注,尝试开源包)

        json的局限性:

                不是所有的类型都可以转成json

                json的key必须是string类型

                循环嵌套的数据类型不支持

                指针类型会被提取出内容并加封

            json encode数据的方法:   js,_ := json.Marshal(go_object) 

            json encode数据到文件中 :

            file , _ := os.OpenFile(filename,os.O_CREATE|os.O_WRITEOLY,0666)

            enc := json.NewEncoder(file) 

            err := enc.Encode(go_object) 

            json 的数据类型和 Go的数据类型的对应关系:

            bool  <----------->  json boolean

            float64 <------------>  json  numbers

            string  <-------------> json string 

            nil   <------------->  json null 

《12》XML文件格式的读取

            xml格式文件的读取类似于json格式的读取

            input :=  xmlcontentstring 

            inputReader := strings.NewReader(input)

            p:= xml.NewDecoder(inputReader) 

            for t,err = p.Token(); err == nil ; t ,err = p.Token(){

                switch token := t.(type) {

                case xml.StartElement:

                        name := token.Name.Local

                        fmt.Printf("Token name :%s \n",name)

                        for _ , attr :=range token.Attr {

                                attrName := attr.Name.Local

                                attrValue := attr.Value

                                fmt.Printf("An attribute is : %s %s \n",attrName,attrValue)

                        }

                case xml.EndElement:

                        name := token.Name.Local

                        fmt.Println("End of token",name)

                case xml.CharData:

                        content := string([]byte(token))

                        fmt.Printf("This is content : %v \n",content)

                default:

            }

        }

《13》GOB文件格式的读取

            gob是go binary format的简称,gob是go专属的二进制的格式,使用方法和json类似

《14》加密摘要算法的使用

sha1,md5 这些常用的必须掌握

hasher := md5.New()   // 创建算法的实例

b := []byte{}  //md5值的存储之地

io.WriteString(hasher,content)  //写入方式一

content := []byte("blablabla") 

nbytes , err := hash.Write(content)  //写入方式二

checksum := hasher.Sum(b) 

hasher.Reset()  //清空内容

相关文章

  • GO语言学习---chapter12

    第12章 文件读写 2018.06.28-2018.06.29 主要涉及的库有 os io bufio 打开文件:...

  • Go 语言学习技巧和编程思维

    Go 语言学习技巧和编程思维 一、了解 Go 语言 了解 Go 语言背景 学习 Go 语言,首先要了解 Go 语言...

  • 初识Go语言-1

    Go语言学习路径 初识Go语言 Go语言环境搭建与IDE安装 Go语言基础语法 Go语言数据类型 Go语言变量和常...

  • 笨办法学golang(三)

    这是Go语言学习笔记第三篇。 Go语言学习笔记参考书籍「Go语言圣经」以及Go官方标准库 Go语言基本类型主要有布...

  • 第一篇:为什么要学习Go语言?

    学习书籍--许式伟、吕桂华等编著《Go语言编程》 目录 一、几种语言的理解 二、为什么要学习Go语言?(Go语言最...

  • 并发编程

    学习来源:Go语言实战、blibli 黑马程序员 20小时快速入门go语言(中) Go语言的优势 Go语言设计简单...

  • 笨办法学golang(二)

    这是Go语言学习笔记的第二篇文章。 Go语言学习笔记参考书籍「Go语言编程」、Go官方标准库 前文提要 上篇文章中...

  • 《深入学习Go语言》

    《深入学习Go语言》8月火热上市:当当,天猫,京东同步发售。 本书适合初次学习Go语言,以及对Go语言有初步了解的...

  • 笨办法学golang(四)

    这是Go语言学习笔记的第四篇 Go语言学习笔记参考书籍「Go语言圣经」以及Go官方标准库 数组 数组是指一系列同类...

  • Go语言入门到精通详解如何学习Go语言?

    如何学习Go语言?再回答这个问题之前,我们首先要想明白,自己为什么学习Go语言?在我看来,Go语言之所有越来越受到...

网友评论

      本文标题:GO语言学习---chapter12

      本文链接:https://www.haomeiwen.com/subject/vvawyftx.html