go读文件操作实战
2021/5/1 18:25:36
本文主要是介绍go读文件操作实战,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一 实战1
1 需求
读取文件的内容并显示在终端(带缓冲区的方式),使用 os.Open, file.Close, bufio.NewReader(),reader.ReadString 函数和方法。
2 代码
package main import ( "bufio" "fmt" "io" "os" ) func main() { // 打开文件 // 概念说明: file 的叫法 // 1 file 叫 file 对象 // 2 file 叫 file 指针 // 3 file 叫 file 文件句柄 file, err := os.Open("d:/test.txt") if err != nil { fmt.Println("open file err=", err) } // 当函数退出时,要及时的关闭file defer file.Close() // 要及时关闭file句柄,否则会有内存泄漏. /* const ( defaultBufSize = 4096 // 默认的缓冲区为 4096 ) */ // 创建一个 *Reader ,是带缓冲的 reader := bufio.NewReader(file) // 循环的读取文件的内容 for { str, err := reader.ReadString('\n') // 读到一个换行就结束 if err == io.EOF { // io.EOF表示文件的末尾 break } // 输出内容 fmt.Printf(str) } fmt.Println("文件读取结束...") }
3 测试
123
2354
534
文件读取结束...
二 实战2
1 需求
读取文件的内容并显示在终端(使用 ioutil 一次将整个文件读入到内存中),这种方式适用于文件不大的情况。相关方法和函数(ioutil.ReadFile)。
2 代码
package main import ( "fmt" "io/ioutil" ) func main() { // 使用 ioutil.ReadFile 一次性将文件读取到位 file := "d:/test.txt" content, err := ioutil.ReadFile(file) if err != nil { fmt.Printf("read file err=%v", err) } // 把读取到的内容显示到终端 fmt.Printf("%v\n", content) // []byte fmt.Printf("%v", string(content)) // 转为string // 我们没有显式的 Open 文件,因此也不需要显式的 Close 文件。因为,文件的 Open 和 Close 被封装到 ReadFile 函数内部。 }
3 测试
[49 50 51 13 10 50 51 53 52 13 10 53 51 52 13 10]
123
2354
534
这篇关于go读文件操作实战的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-04-01got an unexpected keyword argument
- 2024-03-30维多利亚的秘密 golang入坑系统
- 2024-03-29mongodb sort by date
- 2024-03-29go swagger
- 2024-03-25mongodb cdc
- 2024-03-25how to use go in vscode
- 2024-03-22mongooseserverselectionerror: connect econnrefused ::1:27017
- 2024-03-21pymongo insert_many
- 2024-03-18projection mongodb
- 2024-03-14clickhouse-go