golang文件操作 -尊龙游戏旗舰厅官网
尊龙游戏旗舰厅官网
收集整理的这篇文章主要介绍了
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文件操作的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: nexus-3本地下载jar的setti
- 下一篇: spring依赖注入(di)