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

      

  • 相关阅读:
    datatables插件适用示例
    RabbitMQ三----'任务分发 '
    ftp上传下载
    运用JS导出ecxel表格、实现文件重命名
    浅谈MySQL索引背后的数据结构及算法【转】
    SQL语句导致性能问题
    由浅入深理解索引的实现【转】
    MySQL ACID及四种隔离级别的解释
    MyISAM引擎和InnoDB引擎的特点
    MySQL复制中slave延迟监控
  • 原文地址:https://www.cnblogs.com/wujuntian/p/11612987.html
Copyright © 2011-2022 走看看