zoukankan      html  css  js  c++  java
  • go 文件读取

    package main
    
    import (
    	"bufio"
    	"fmt"
    	"io"
    	"io/ioutil"
    	"os"
    )
    
    func main() {
    	//只读方式打开文件
    	file ,err := os.Open("./main.go")
    	if err != nil {
    		fmt.Println(err)//打开文件失败
    		return
    	}
    	defer file.Close() //操作完成之后关闭文件流
    	fmt.Println(file)
    
    	//读取文件内容 --方法一
    	var strSilce []byte
    	var tempSilce = make([]byte,128) //每次读取128个字节
    	for {
    		n,err := file.Read(tempSilce)  //返回读取的字节数   读取的内容放在tempSilce切片中
    		if err == io.EOF{ //表示读取完毕
    			fmt.Println("读取完成")
    			break
    		}
    		if err != nil{
    			fmt.Println(err) //读取文件失败
    			return
    		}
    		fmt.Println(n)
    		strSilce = append(strSilce,tempSilce[:n]...) //tempSilce[:n]  读取了多少个字节 就拿切片里面多少个字节 (考虑场景最后有不足字节的情况)
    	}
    	fmt.Println(string(strSilce)) //切片转字符串
    
    	//读取文件内容 --方法二(bufio)
    	var fileStr string
    	reader := bufio.NewReader(file)
    	for {
    		str ,err := reader.ReadString('
    ') //
    为分隔符 表示一次读取一行
    		if err == io.EOF{
    			fileStr += str //读取完成 可能还有返回值
    			fmt.Println("读取完成")
    			break
    		}
    		if err != nil {
    			fmt.Println(err)
    		}
    		fileStr += str
    	}
    
    	fmt.Println(fileStr)
    
    	//读取文件内容 --方法三(ioutil) 不需要os.open (其他两种都是以文件流的形式读取  这个不是)
    	byteStr,err := ioutil.ReadFile("./main.go")
    	if err != nil {
    		fmt.Println(err)
    		return
    	}
    	fmt.Println(string(byteStr))
    
    }
    

      

  • 相关阅读:
    Codeforces Round #534 (Div. 2) D. Game with modulo 交互题
    传球游戏 dp
    欧拉通路和欧拉回路
    HDU 1116
    HDU 4970
    HDU 4557
    HDU 4864
    HDU 1565
    HDU 3046
    HDU 4240
  • 原文地址:https://www.cnblogs.com/finnlee/p/14275076.html
Copyright © 2011-2022 走看看