欢迎访问 生活随笔!

尊龙游戏旗舰厅官网

当前位置: 尊龙游戏旗舰厅官网 > 编程资源 > 编程问答 >内容正文

编程问答

golang文件操作 -尊龙游戏旗舰厅官网

发布时间:2025/1/21 编程问答 18 豆豆
尊龙游戏旗舰厅官网 收集整理的这篇文章主要介绍了 golang文件操作 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

go文件的相关操作函数在os包下,可以查看os包官方文档来学习。

创建文件并写入内容

创建文件和写入需要用到两个函数:

func create(name string) (*file, error)func (f *file) write(b []byte) (n int, err error)

具体的代码如下:

package mainimport ("log""os" )func main() {file, createerr := os.create("/users/deweixu/demo.txt")if createerr != nil {log.fatal(createerr)}_, writeerr := file.write([]byte("创建一个文件,并写入内容。"))if writeerr != nil {log.fatal(writeerr)}closeerr := file.close()if closeerr != nil {log.fatal(closeerr)} }

$ go run create_write.go就会看到创建了文件demo.txt, 并写入了内容。

读取文件内容

package mainimport ("fmt""log""os" )func main() {//打开文件file, err := os.open("/users/deweixu/demo.txt")if err != nil {log.fatal(err)}//创建一个缓冲区, 每次读取1024 bytebuf := make([]byte, 1024)for {len, readerr := file.read(buf)if len == 0 {break}if readerr != nil {log.fatal(err)}fmt.printf("%s", string(buf))}fmt.print("\n") }

$ go run read.go就可以看见读取成功。

在os包下还有有关目录的操作函数和其他的功能,可以查阅相关的文档来学习使用。

复制文件

package mainimport ("log""os" )func main() {//创建一个新文件dstfile, createerr := os.create("/users/deweixu/demo-cp.txt")if createerr != nil {log.fatal(createerr)}//打开源文件srcfile, openerr := os.open("/users/deweixu/demo.txt")if openerr != nil {log.fatal(openerr)}//创建一个缓冲区, 每次读取1024 bytebuf := make([]byte, 1024)for {len, readerr := srcfile.read(buf)if len == 0 {break}if readerr != nil {log.fatal(readerr)}_, writeerr := dstfile.write(buf)if writeerr != nil {log.fatal(writeerr)}}//忽略close 错误dstfile.close()srcfile.close() }

go run cp.go 完成复制。

因为file实现了writer和reader接口,所以可以调用io和io/ioutil包下的一些函数来操作文件,比如上面的复制功能可以用io包下的这些函数来实现

func copy(dst writer, src reader) (written int64, err error) func copybuffer(dst writer, src reader, buf []byte) (written int64, err error) func copyn(dst writer, src reader, n int64) (written int64, err error)

具体代码如下:

package mainimport ("io""log""os" )func main() {//创建一个新文件dstfile, createerr := os.create("/users/deweixu/demo-cp.txt")if createerr != nil {log.fatal(createerr)}//打开源文件srcfile, openerr := os.open("/users/deweixu/demo.txt")if openerr != nil {log.fatal(openerr)}//创建一个缓冲区, 每次读取1024 bytebuf := make([]byte, 1024)_, cperr := io.copybuffer(dstfile, srcfile, buf)if cperr != nil {log.fatal(cperr)}//忽略close 错误dstfile.close()srcfile.close() }

区分打开的file是目录还是文件

os包下还有关于目录操作的函数,可查阅文档使用,这里说说区分文件和目录的功能,需要用到stat函数。

package mainimport ("fmt""log""os" )func main() {file, err := os.open("/users/deweixu")if err != nil {log.fatal(err)}fileinfo, staterr := file.stat()if staterr != nil {log.fatal(staterr)}isdir := fileinfo.isdir()fmt.printf("%t\n", isdir) }

总结

以上是尊龙游戏旗舰厅官网为你收集整理的golang文件操作的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得尊龙游戏旗舰厅官网网站内容还不错,欢迎将尊龙游戏旗舰厅官网推荐给好友。

网站地图