Go语言使用切片读写文件
2023-06-13 09:12:00 时间
切片提供了 Go语言中处理 I/O 缓冲的标准方式,下面 cat 函数的第二版中,在一个切片缓冲内使用无限 for 循环(直到文件尾部 EOF)读取文件,并写入到标准输出(os.Stdout)。
func cat(f *os.File) { const NBUF = 512 var buf [NBUF]byte for { switch nr, err := f.Read(buf[:]); true { case nr 0: fmt.Fprintf(os.Stderr, cat: error reading: %s/n , err.Error()) os.Exit(1) case nr == 0: // EOF return case nr 0: if nw, ew := os.Stdout.Write(buf[0:nr]); nw != nr { fmt.Fprintf(os.Stderr, cat: error writing: %s/n , ew.Error()) }
下面的代码使用了 os 包中的 os.file 和 Read 方法;与上一节示例代码具有同样的功能。
package main import ( flag fmt func cat(f *os.File) { const NBUF = 512 var buf [NBUF]byte for { switch nr, err := f.Read(buf[:]); true { case nr 0: fmt.Fprintf(os.Stderr, cat: error reading: %s/n , err.Error()) os.Exit(1) case nr == 0: // EOF return case nr 0: if nw, ew := os.Stdout.Write(buf[0:nr]); nw != nr { fmt.Fprintf(os.Stderr, cat: error writing: %s/n , ew.Error()) func main() { flag.Parse() // 扫描arg列表并设置标志 if flag.NArg() == 0 { cat(os.Stdin) for i := 0; i flag.NArg(); i++ { f, err := os.Open(flag.Arg(i)) if f == nil { fmt.Fprintf(os.Stderr, cat: can t open %s: error %s/n , flag.Arg(i), err) os.Exit(1) cat(f) f.Close() }
22605.html
go相关文章
- 2.Go语言之文件操作学习记录.md
- 2023-02-28:moonfdd/ffmpeg-go是用go语言绑定ffmpeg的库,目前是github上最好用的库。请用go语言将yuv文件编码为h264
- Go读取yaml文件到struct类
- 2023-02-21:请用go语言调用ffmpeg,解码mp4文件,输出视频信息和总帧数。
- 2023-02-22:请用go语言调用ffmpeg,保存mp4文件的视频帧,每帧用ppm图片保存。
- Go-包管理-go build(一)
- Go语言圣经–包和文件-包初始化习题详解编程语言
- Go语言TCP网络程序设计
- 轻松搞定Go语言连接MySQL(go连接mysql)
- 语言结合SQL Server,Go谱写新篇章(sqlserver的go)
- 一步一步学习Go读取Oracle数据库(go读取oracle)
- 前行不止Go语言监听Oracle日志(go监听oracle日志)
- Go语言操作Oracle数据库技术实践(go操作oracle)
- 数据库Go语言连接Oracle数据库的指南(go如何连接oracle)