• 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)
    	}
    }
    

      

  • 相关阅读:
    pgsql 时间转时间戳
    java SHA-1加密
    java 输出json文件
    按照指定字符串截取文本
    java 科学计数法转换
    【原创】几个常用机场的对比
    【原创】Google Cloud服务器路由分析
    批量转换文件Unicode到中文
    博客搬家
    关于zookeeper
  • 原文地址:https://www.cnblogs.com/wujuntian/p/11612987.html
Copyright © 2020-2023  润新知