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()
    }
    
    记录学习和生活的酸甜苦辣.....哈哈哈
  • 相关阅读:
    Java实现 蓝桥杯 算法训练 Number Challenge(暴力)
    Java实现 蓝桥杯 算法训练 Number Challenge(暴力)
    Java实现 蓝桥杯 算法训练 Number Challenge(暴力)
    Java实现 蓝桥杯 算法训练 Rotatable Number(暴力)
    Java实现 蓝桥杯 算法训练 Rotatable Number(暴力)
    Java实现 蓝桥杯 算法训练 Rotatable Number(暴力)
    Java实现 蓝桥杯 算法训练 猴子吃包子(暴力)
    Java实现 蓝桥杯 算法训练 猴子吃包子(暴力)
    Java实现 蓝桥杯 算法训练 猴子吃包子(暴力)
    Python位运算符
  • 原文地址:https://www.cnblogs.com/yjt1993/p/14618467.html
Copyright © 2011-2022 走看看