打开文件
package main
import (
"fmt"
"os"
)
/*
buffer 缓冲区
utility 便利的工具
util 便捷工具(傻瓜式调用)
permission 权限
*/
//便捷的打开文件
func main021() {
//打开文件,返回文件对象的指针和错误
filePtr, err := os.Open("F:/BlockChain/code/W2/day4/测试文件")
//如果有错误,说明打开失败,否则就是打开成功
if err != nil{
fmt.Printf("打开文件失败,err=%s",err)
//结束当前函数
return
}else {
fmt.Println("打开文件成功")
}
//文件是IO资源,使用完毕一定要关闭文件,以释放IO资源
defer func() {
filePtr.Close()
fmt.Println("文件已关闭")
}()
//打印文件信息
fmt.Println("filePtr=",filePtr)
}
func main() {
//file, err := os.OpenFile("F:/BlockChain/code/W2/day4/测试文件", os.O_RDONLY, 0)
file, err := os.OpenFile("F:/BlockChain/code/W2/day4/测试文件", os.O_CREATE|os.O_TRUNC|os.O_RDWR, 0)
if err!=nil{
fmt.Println("文件打开失败,err=",err)
return
}else {
fmt.Println("文件打开成功")
}
defer file.Close()
}
缓冲式读文件
package main
import (
"bufio"
"fmt"
"io"
"os"
)
func main() {
file, err := os.OpenFile("F:/BlockChain/code/W2/day4/测试文件", os.O_RDONLY, 0)
if err != nil{
fmt.Println("文件打开失败,err=",err)
return
}else{
fmt.Println("文件打开成功")
}
//函数返回前,关闭文件,释放io资源
defer func() {
file.Close()
fmt.Println("文件已关闭")
}()
//创建文件的缓冲读取器
reader := bufio.NewReader(file)
//循环读取数据,以换行符为定界符,直到文件末尾
for{
//读取一段字符串,以换行符为定界符
line, err := reader.ReadString('
')
//判断读取是否有错误
if err != nil{
fmt.Println("读取失败,err=", err)
//读到了文件末尾
if err == io.EOF{
fmt.Println("已到文件末尾")
//退出循环
break
}
}else{
//没有错误读取成功,打印读到的数据
fmt.Print(line)
}
}
fmt.Println("文件读取结束")
}
使用ioutil包下的API进行便捷的读取
func main() {
//读取指定文件,获取原始字节,其内部调用了文件的打开与关闭
bytes, err := ioutil.ReadFile("F:/BlockChain/code/W2/day4/测试文件")
//判断是否有错误
if err != nil{
fmt.Println("文件读取失败,err=",err)
return
}else {
//将原始字节强转为string并输出
fmt.Println("文件读取成功")
text := string(bytes)
fmt.Println(text)
}
}