一次读多少byte第一种,一次读多少行用bufio,读取完整文件用ioutil。
package main
import (
"fmt"
"os"
)
//打开文件
func main() {
fileObj, err := os.Open("./main.go")
if err != nil {
fmt.Printf("open file failed ,err:%V", err)
return
}
//记得关闭文件
//读文件
//var tmp = make([]byte,128) // 指定读的长度
var tmp [128]byte
for{
n ,err := fileObj.Read(tmp[:])
if err != nil{
fmt.Printf("read from file failed,err:%V",err)
return
}
fmt.Printf("读了%d个字节\n",n)
fmt.Println(string(tmp[:n]))
if n == 0{
fileObj.Close()
return
}
}
}
结果
读了128个字节
package main
import (
"fmt"
"os"
)
//打开文件
func main() {
fileObj, err := os.Open("./main.go")
if err !=
读了128个字节
nil {
fmt.Printf("open file failed ,err:%V", err)
return
}
//记得关闭文件
//读文件
//var tmp = make([]by
读了128个字节
te,128) // 指定读的长度
var tmp [128]byte
for{
n ,err := fileObj.Read(tmp[:])
if err != nil{
fmt.Printf("re
读了128个字节
ad from file failed,err:%V",err)
return
}
fmt.Printf("读了%d个字节\n",n)
fmt.Println(string(tmp[:n]))
if n
读了50个字节
== 0{
fileObj.Close()
return
}
}
}
利用bufio这个包裹读取文件
func readFromFilebyBufio(){
fileObj , err := os.Open("./main.go")
if err != nil {
fmt.Printf("Open file failed: %v",err)
return
}
//记得关闭文件
defer fileObj.Close()
//创建一个用来从文件中读内容的对象
reader := bufio.NewReader(fileObj)//拆包关键新的读的对象
for{
line , err := reader.ReadString('\n')
if err == io.EOF {
return
}
if err != nil {
fmt.Printf("read line failed: %v",err)
return`在这里插入代码片`
}
fmt.Println(line)
}
}
读取结果
结果每行之间存在空行是因为println
package main
import (
"bufio"
"fmt"
"io"
"os"
)
//打开文件
func readFromFile1(){
fileObj, err := os.Open("./main.go")
if err != nil {
fmt.Printf("open file failed ,err:%V", err)
return
}
//记得关闭文件
//读文件
//var tmp = make([]byte,128) // 指定读的长度
var tmp [128]byte
for{
n ,err := fileObj.Read(tmp[:])
if err == io.EOF {
fmt.Println("读完了")
return
}
if err != nil{
fmt.Printf("read from file failed,err:%V",err)
return
}
fmt.Printf("读了%d个字节\n",n)
fmt.Println(string(tmp[:n]))
if n < 128{
fileObj.Close()
return
}
}
}
// 利用bufio这个包裹读取文件
func readFromFilebyBufio(){
fileObj , err := os.Open("./main.go")
if err != nil {
fmt.Printf("Open file failed: %v",err)
return
}
//记得关闭文件
defer fileObj.Close()
//创建一个用来从文件中读内容的对象
reader := bufio.NewReader(fileObj)//拆包关键新的读的对象
for{
line , err := reader.ReadString('\n')
if err == io.EOF {
return
}
if err != nil {
fmt.Printf("read line failed: %v",err)
return
}
fmt.Println(line)
}
func main() {
//readFromFile1()
readFromFilebyBufio()
ioutil
func readFromFilebyIoutil(){
ret ,err := ioutil.ReadFile("./main.go")
if err != nil {
fmt.Printf("read file failed ,err:%v",err)
return
}
fmt.Println(string(ret))
}