zoukankan      html  css  js  c++  java
  • go语言文件操作实例

    package main
    
    
    import "fmt"
    import "os"
    import "io"
    import "bufio"
    import "io/ioutil"
    
    func main() {
    	
    	myfile := "debug.txt"
    	
    	test_write_file(myfile)
    	
    	test_read_file(myfile)
    	
    	test_open_or_create_file()
    	
    	test_bufio()
    	
    	test_ioutil();
    	
    }
    
    /*写文件内容*/
    func test_write_file(filename string) {
    	fp, err := os.Create(filename)
    	if (err != nil) {
    		fmt.Println(err)
    		return
    	}
    	for i := 0; i < 10; i++ {
    		ourstr := fmt.Sprintf("%s:%d
    ", "Hello World", i)
    		fp.WriteString(ourstr)
    		fp.Write([]byte("abcd
    "))
    	}
    	fp.Close()
    }
    
    /*读取文件内容*/
    func test_read_file(filename string) {
    	fp, err := os.Open(filename)
    	if err != nil {
    		fmt.Println(err)
    	}
    	defer fp.Close()
    	buf := make([]byte, 1024)
    	for {
    		n, _ := fp.Read(buf)
    		if n == 0 {
    			break
    		}
    		os.Stdout.Write(buf)
    	}
    }
    
    /*同时使用os.Open与os.Create操作文件*/
    func test_open_or_create_file() {
    	openFile := "log.txt"
    	fo, err := os.Open(openFile)
    	if err != nil {
    		fmt.Println(err)
    	}
    	defer fo.Close()
    	
    	createFile := "log_new.txt" 
    	fc, err := os.Create(createFile)
    	if err != nil {
    		fmt.Println(err)
    	}
    	defer fc.Close()
    	
    	buf := make([]byte, 1024)
    	for {
    		rn, err := fo.Read(buf)
    		if err != nil && err != io.EOF {
    			fmt.Println(err)
    			panic(err)
    		}
    		fmt.Println(rn)
    		if rn == 0 {
    			break
    		}
    		
    		wn, err := fc.Write(buf[: rn])
    		if err != nil {
    			fmt.Println(err)
    			panic(err)
    		}
    		if wn != rn {
    			fmt.Println("err writing")
    			panic("err writing")
    		}
    	}
    }
    
    /*用bufio库*/
    func test_bufio() {
    	ofile := "log.txt"
    	fo, err := os.Open(ofile)
    	if err != nil {
    		panic(err)
    	}
    	defer fo.Close()
    
    	r := bufio.NewReader(fo) 
    	
    	cfile := "output.txt"
    	fc, err := os.Create(cfile)
    	if err != nil {
    		panic(err)
    	}
    	defer fc.Close()
    	w := bufio.NewWriter(fc) 
    	
    	buf := make([]byte, 1024)
    	for {
    		fmt.Println("start")
    		rn, err := r.Read(buf)
    		if err != nil && err != io.EOF {
    			panic(err)
    		}
    		if rn == 0 {
    			break
    		}
    		
    		wn, err := w.Write(buf[: rn])
    		if err != nil {
    			panic(err)
    		}
    		if wn != rn {
    			panic("err writing")
    		}
    	}
    	err = w.Flush()
    	if err != nil {
    		panic(err)
    	}
    }
    
    /*用ioutil库*/
    func test_ioutil() {
    	b, err := ioutil.ReadFile("log.txt")
    	if err != nil {
    		panic(err)
    	}
    	
    	err = ioutil.WriteFile("out.txt", b, 0644)
    	if err != nil {
    		panic(err)
    	}
    }
    

      

  • 相关阅读:
    Spring Boot 配置加载顺序详解
    JVM总结篇
    nginx负载均衡的策略
    布隆过滤器的方式解决缓存穿透问题
    Spring Cloud Eureka自我保护机制(服务无法剔除)
    缓存穿透,缓存击穿,缓存雪崩解决方案分析
    高并发秒杀系统总结
    Linux环境进程间通信(一)
    HDU 1695 GCD(容斥定理)
    数据结构精要------冒泡与直接排序算法
  • 原文地址:https://www.cnblogs.com/zgen1/p/15169707.html
Copyright © 2011-2022 走看看