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

      

  • 相关阅读:
    java垃圾回收机制
    浮点数比较/运算BigDecimal
    java8新特性_::双冒号
    java的lambda表达式
    【转】DelphiXE10.2.3——跨平台生成验证码图片
    ide fix pack for delph 10.2.3发布了
    使用ALVideoPlayerSurface制作视频播放器
    kbmMWLog同时输出日志到多个日志管理器
    kbmMWLog输出日志到控制台或指定Grid
    推荐内置android控件的开源项目alcinoe
  • 原文地址:https://www.cnblogs.com/zgen1/p/15169707.html
Copyright © 2011-2022 走看看