zoukankan      html  css  js  c++  java
  • go读写文本文件

    一、文件读取

    1. 将整个文件读取到内存中

    package main
    
    import (
    	"flag"
    	"fmt"
    	"io/ioutil"
    )
    
    func main() {
    	//从命令行标记参数中获取文件路径
    	fptr := flag.String("fpath", "test.txt", "the file path to read from")
    	flag.Parse()
    	data, err := ioutil.ReadFile(*fptr)
    	if err != nil {
    		fmt.Println("File reading error: ", err)
    	}
    	fmt.Println(string(data))
    }
    

      

    2. 分块读取文件

    package main
    
    import (
    	"bufio"
    	"flag"
    	"fmt"
    	"io"
    	"log"
    	"os"
    )
    
    func main() {
    	fptr := flag.String("fpath", "test.txt", "the file path to read from")
    	flag.Parse()
    
    	f, err := os.Open(*fptr)
    	if err != nil {
    		log.Fatal(err)
    	}
    	defer func() {
    		if err := f.Close(); err != nil {
    			log.Fatal(err)
    		}
    	}()
    	r := bufio.NewReader(f)
    	b := make([]byte, 10)
    	for {
    		_, err := r.Read(b)
    		if err != nil {
    			if err == io.EOF {
    				break
    			}
    			log.Fatal(err)
    		}
    		fmt.Println(string(b))
    	}
    }
    

      

    3. 逐行读取文件

    package main
    
    import (
    	"bufio"
    	"flag"
    	"fmt"
    	"log"
    	"os"
    )
    
    func main() {
    	fptr := flag.String("fpath", "test.txt", "the file path to read from")
    	flag.Parse()
    
    	f, err := os.Open(*fptr)
    	if err != nil {
    		log.Fatal(err)
    	}
    	defer func() {
    		if err = f.Close(); err != nil {
    			log.Fatal(err)
    		}
    	}()
    	s := bufio.NewScanner(f)
    	for s.Scan() {
    		fmt.Println(s.Text())
    	}
    	err = s.Err()
    	if err != nil {
    		log.Fatal(err)
    	}
    }
    

      

    二、文件写入

    1. 将字符串写入文件

    package main
    
    import (
    	"fmt"
    	"log"
    	"os"
    )
    
    func main() {
    	f, err := os.Create("test2.txt")
    	if err != nil {
    		log.Fatal(err)
    	}
    	defer func() {
    		if err = f.Close(); err != nil {
    			log.Fatal(err)
    		}
    	}()
    	l, err := f.WriteString("Hello world")
    	if err != nil {
    		log.Fatal(err)
    	}
    	fmt.Println(l, " bytes written successfully!")
    }
    

      

    2. 将字节写入文件

    package main
    
    import (
    	"fmt"
    	"log"
    	"os"
    )
    
    func main() {
    	f, err := os.Create("test2.txt")
    	if err != nil {
    		log.Fatal(err)
    	}
    	defer func() {
    		if err = f.Close(); err != nil {
    			log.Fatal(err)
    		}
    	}()
    	d := []byte{104, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100}
    	l, err := f.Write(d)
    	if err != nil {
    		log.Fatal(err)
    	}
    	fmt.Println(l, " bytes written successfully!")
    }
    

      

    3. 追加到文件

    package main
    
    import (
    	"fmt"
    	"log"
    	"os"
    )
    
    func main() {
    	f, err := os.OpenFile("test3.txt", os.O_APPEND|os.O_WRONLY, 0644)
    	if err != nil {
    		log.Fatal(err)
    	}
    	defer func() {
    		if err = f.Close(); err != nil {
    			log.Fatal(err)
    		}
    	}()
    	_, err = fmt.Fprintln(f, "Hello, my name is jet.")
    	if err != nil {
    		log.Fatal(err)
    	}
    }
    

      

  • 相关阅读:
    大屏设计-大数据综合展示可视化平台
    大数据可视化大屏设计经验,教给你!
    数据可视化表格-设计经验分享!
    大数据可视化大屏图表设计经验,教给你
    数据可视化美学形式与功能需要齐头并进
    大屏可视化解决方案
    node-sass 安装失败 win32-x64-57_binding.node
    node版本如何升级
    ES6课程---8、模板字符串
    ES6课程---7、箭头函数
  • 原文地址:https://www.cnblogs.com/wujuntian/p/11612987.html
Copyright © 2011-2022 走看看