1、定义
计算机中的文件是存储在外部介质(通常是磁盘)上的数据集合,文件分为文本文件和二进制文件。
2、打开和关闭文件
os.Open()
函数能够打开一个文件,返回一个*File
和一个err
。对得到的文件实例调用close()
方法能够关闭文件。
代码展示:
package main
import (
"fmt"
"os"
)
func readFromFile1() {
//只读方式打开当前目录main.go文件
file, err := os.Open("./main.go")
if err != nil {
fmt.Println("open file failed", err)
return
}
defer file.Close()
}
func main() {
readFromFile1()
}
3、使用read()、bufio、ioutil方法读取文件
package main
import (
"bufio"
"fmt"
"io"
"io/ioutil"
"os"
)
func readFromFile1() {
//只读方式打开当前目录main.go文件
file, err := os.Open("./main.go")
if err != nil {
fmt.Println("open file failed", err)
return
}
defer file.Close()
//使用Read()方法读取数据
var tmp = make([]byte, 128)
for {
n, err := file.Read(tmp[:])
if err == io.EOF {
fmt.Println("文件读完了")
return
}
if err != nil {
fmt.Println("read file failed,err:", err)
return
}
fmt.Printf("读取了%d字节数据\n", n)
fmt.Println(string(tmp[:n]))
if n < 128 {
return
}
}
}
//利用bufio这个包读文件
func readFromBufio() {
//只读方式打开当前目录main.go文件
file, err := os.Open("./main.go")
if err != nil {
fmt.Println("open file failed", err)
return
}
defer file.Close()
reader := bufio.NewReader(file)
for {
line, err := reader.ReadString('\n')
if err == io.EOF {
return
}
if err != nil {
fmt.Printf("read line files,err:%v", err)
}
fmt.Print(line)
}
}
//利用ioutil读取整个文件
func readFromUntil() {
ret, err := ioutil.ReadFile("./main.go")
if err != nil {
fmt.Printf("read ret failed,err:%v", err)
return
}
fmt.Println(string(ret))
}
func main() {
readFromFile1()
readFromBufio()
readFromUntil()
}