zoukankan      html  css  js  c++  java
  • 文件操作

    一、普通方式

    1、使用普通方式读取

    package main
    
    import (
    	"fmt"
    	"io"
    	"log"
    	"os"
    )
    
    // 读取文件操作
    // 读取文件使用的是os包
    
    func ReadFileInfo(){
    	// func os.Open(name string) (*os.File, error)
    	// 打开文件
    	file,err := os.Open(`E:projectsGoProjectsrcMyGo	estmain.go`)
    	// 关闭文件
    	
    	if err != nil{
    		log.Fatalln("打开文件失败,错误信息:",err.Error())
    		return
    	}
    	defer file.Close()
    
    	// 读取文件
    	//func (*os.File).Read(b []byte) (n int, err error)
    	var b [128]byte
    	for{
    	n,err:= file.Read(b[:])
    	if err != nil{
    		if err == io.EOF{
    			break
    		}
    		log.Fatalln("读取文件失败: ",err.Error())
    		return	
    	}
    	fmt.Print(string(b[:n]))
    }	
    }
    func main(){
    	ReadFileInfo()
    }
    

    2、使用普通方式写入

    package main
    
    import (
    	"log"
    	"os")
    
    
    func FileWrite() {
    	//func os.OpenFile(name string, flag int, perm os.FileMode) (*os.File, error)
    	f, err := os.OpenFile(`E:projectsGoProjectsrcMyGo	est2log.txt`,os.O_CREATE|os.O_WRONLY,0777)
    	if err != nil{
    		log.Fatalln("打开文件失败: ",err.Error())
    	}
    
    	defer f.Close()
    	//func (*os.File).WriteString(s string) (n int, err error)
    	_,err = f.WriteString("Hello Go!!!")
    	if err != nil{
    		log.Fatalln("写入失败: ", err.Error())
    		
    	}
    
    }
    
    func main(){
    	FileWrite()
    }
    

    二、使用buifo

    1、使用bufio读取

    bufio只是在原先的基础上做了一层封装,类似Java的io操作

    package main
    
    import (
    	"bufio"
    	"fmt"
    	"io"
    	"log"
    	"os"
    )
    
    // 读取文件操作
    // 读取文件使用的是os包
    
    func ReadFileInfoBuf(){
    	// func os.Open(name string) (*os.File, error)
    	// 打开文件
    	file,err := os.Open(`E:projectsGoProjectsrcMyGo	est1main.go`)
    	// 关闭文件
    	
    	if err != nil{
    		log.Fatalln("打开文件失败,错误信息:",err.Error())
    		return
    	}
    	defer file.Close()
    
    	//func bufio.NewReader(rd io.Reader) *bufio.Reader
    	// os.File实现了io.Reader接口里面的方法。
    	reader := bufio.NewReader(file)
    
    	// 循环读取
    	var FLAG bool  = false
    	for{
    		//func (*bufio.Reader).ReadString(delim byte) (string, error)
    		s, err := reader.ReadString('
    ')
    		if err != nil{
    			if err == io.EOF{
    				//fmt.Println("文件读取完毕")
    				FLAG = true
    			}else{
    				log.Fatalln("文件读取失败: ",err.Error())
    				return
    			}
    		}
    
    		fmt.Print(s)
    		if FLAG{
    			break
    		}
    	}
    }
    
    func main(){
    	ReadFileInfoBuf()
    }
    

    2、写入文件

    package main
    
    import (
    	"bufio"	
    	"os"
    	"log"
    )
    
    
    func WriteFileByBufio() {
    
    	f,err := os.OpenFile(`E:projectsGoProjectsrcMyGo	est3log.txt`,os.O_CREATE|os.O_WRONLY,0777)
    	if err != nil{
    		log.Fatalln("打开文件失败: ",err.Error())
    	}
    
    	defer f.Close()
    	//func bufio.NewWriter(w io.Writer) *bufio.Writer
    	f1 := bufio.NewWriter(f)
    
    	_,err = f1.WriteString("你好,go")
    	if err != nil{
    		log.Fatalln("写入失败",err.Error())
    	}
    	// 写完一定要刷新缓存
    	f1.Flush()
    
    }
    
    func main(){
    	WriteFileByBufio()
    }
    

    三、使用ioutil

    1、读取

    package main
    
    import (
    	"fmt"
    	"io/ioutil"
            "log"
    )
    func ReadFileByioutil(){
    	//func ioutil.ReadFile(filename string) ([]byte, error)
    	b , err := ioutil.ReadFile(`E:projectsGoProjectsrcMyGo	est1main.go`)
    	if err != nil{
    		log.Fatalln("读取错误: ",err.Error())
    	}
    	fmt.Print(string(b))
    }
    func main(){
    	//ReadFileInfoBuf()
    	ReadFileByioutil()
    }
    
    

    2、写入文件

    package main
    
    import (
    	"io/ioutil"
    	"log"
    )
    
    
    func WriteFile() {
    	//func ioutil.WriteFile(filename string, data []byte, perm os.FileMode) error
    	err := ioutil.WriteFile(`E:projectsGoProjectsrcMyGo	est4log.txt`,[]byte("你好,go"),0777)
    	if err != nil{
    		log.Fatalln("写入失败: ",err.Error())
    		return
    	}
    }
    
    func main(){
    	WriteFile()
    }
    

    四、使用bufio读取命令行输入

    package main
    
    import (
    	"bufio"
    	"fmt"
    	"os"
    )
    
    
    func ReadConsole() {
    	
    	fmt.Print("请输入数据: ")
    	reader := bufio.NewReader(os.Stdin)
    	s,err := reader.ReadString('
    ')
    	if err != nil{
    		fmt.Println("读取错误")
    	}
    
    	fmt.Println("输入为: ", s)
    
    	
    }
    
    func  main(){
    	ReadConsole()
    }
    
    记录学习和生活的酸甜苦辣.....哈哈哈
  • 相关阅读:
    关于设计
    开机速度优化
    寻找发帖“水王”《编程之美》笔记
    SPSS学习笔记
    《你的灯亮着吗》读书笔记
    《遇见未知的自己》读书笔记
    Python中字符串与字典间转换
    ide vim 设置zz
    Redis几个认识误区zz
    探索AJAX中的消息传输模式(二)
  • 原文地址:https://www.cnblogs.com/yjt1993/p/14618467.html
Copyright © 2011-2022 走看看