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

      

  • 相关阅读:
    python字符串,数组操作
    python爬虫之有道在线翻译
    英雄联盟界面
    学习photoshop心得
    linux命令总结之lsof命令
    linux命令总结之netstat命令
    linux命令总结之route命令
    linux命令总结之ip命令
    linux命令总结之dig命令
    IP地址的分类——a,b,c 类是如何划分的
  • 原文地址:https://www.cnblogs.com/finnlee/p/14275076.html
Copyright © 2011-2022 走看看