GO文件读写01---读文件
打开文件
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('\n') //判断读取是否有错误 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) } }