博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
golang操作文件的四种方法
阅读量:6813 次
发布时间:2019-06-26

本文共 2462 字,大约阅读时间需要 8 分钟。

golang追加内容到文件末尾

最主要的2个函数:func (f *File) Seek(offset int64, whence int) (ret int64, err error)func (f *File) WriteAt(b []byte, off int64) (n int, err error)Seek()查到文件末尾的偏移量WriteAt()则从偏移量开始写入以下是栗子:// fileName:文件名字(带全路径)// content: 写入的内容func appendToFile(fileName string, content string) error {// 以只写的模式,打开文件f, err := os.OpenFile(fileName, os.O_WRONLY, 0644) if err != nil { fmt.Println("cacheFileList.yml file create failed. err: " + err.Error()) } else { // 查找文件末尾的偏移量 n, _ := f.Seek(0, os.SEEK_END) // 从末尾的偏移量开始写入内容 _, err = f.WriteAt([]byte(content), n) } defer f.Close() return err}2016/08/31 记:我就是笨蛋,明明最简单的方式就可以实现了:f, err := os.OpenFile(fileName, os.O_WRONLY|os.O_APPEND, 0666)以写跟追加的方式打开文件。。。下面附有操作文件package mainimport ( "bufio"  //缓存IO "fmt" "io/ioutil" //io 工具包 "io" "os")func check(e error) { if e != nil {  panic(e) }}/**  * 判断文件是否存在  存在返回 true 不存在返回false */func checkFileIsExist(filename string) (bool) { var exist = true; if _, err := os.Stat(filename); os.IsNotExist(err) {  exist = false; } return exist;}/**    from: http://www.isharey.com/?p=143 */func main() { var wireteString = "测试n" var filename = "./output1.txt"; var f    *os.File var err1   error; /***************************** 第一种方式: 使用 io.WriteString 写入文件 ***********************************************/ if checkFileIsExist(filename) {  //如果文件存在  f, err1 = os.OpenFile(filename, os.O_APPEND, 0666)  //打开文件  fmt.Println("文件存在"); }else {  f, err1 = os.Create(filename)  //创建文件  fmt.Println("文件不存在"); } check(err1) n, err1 := io.WriteString(f, wireteString) //写入文件(字符串) check(err1) fmt.Printf("写入 %d 个字节n", n);/*****************************  第二种方式: 使用 ioutil.WriteFile 写入文件 ***********************************************/ var d1 = []byte(wireteString); err2 := ioutil.WriteFile("./output2.txt", d1, 0666)  //写入文件(字节数组) check(err2)/*****************************  第三种方式:  使用 File(Write,WriteString) 写入文件 ***********************************************/ f, err3 := os.Create("./output3.txt")  //创建文件 check(err3) defer f.Close() n2, err3 := f.Write(d1)  //写入文件(字节数组) check(err3) fmt.Printf("写入 %d 个字节n", n2) n3, err3 := f.WriteString("writesn") //写入文件(字节数组) fmt.Printf("写入 %d 个字节n", n3) f.Sync()  /***************************** 第四种方式:  使用 bufio.NewWriter 写入文件 ***********************************************/ w := bufio.NewWriter(f)  //创建新的 Writer 对象 n4, err3 := w.WriteString("bufferedn") fmt.Printf("写入 %d 个字节n", n4) w.Flush() f.Close()}

  

转载于:https://www.cnblogs.com/zhangym/p/5826743.html

你可能感兴趣的文章
JavaScript的浏览器兼容性问题小结。
查看>>
Oracle Hint的用法
查看>>
Postfix邮件系统
查看>>
《编写可读代码的艺术》读书文摘--第一部分 表面层次的改进
查看>>
使用Nodejs创建基本的网站 Microblog--《Node.js开发指南》 3
查看>>
网管工作是否值得做下去?
查看>>
神行者PD10-adb push逃脱ro权限
查看>>
JPA(四)之实体关系一对一
查看>>
如何使用羊驼自动生成缩略图的功能。
查看>>
定制化Azure站点Java运行环境(1)
查看>>
inotify用法简介及结合rsync实现主机间的文件实时同步
查看>>
php 判断手机登陆
查看>>
git 问题
查看>>
Fedora18设置终端快捷键 和 桌面快捷方式
查看>>
取消NavigationBar左右两边的空隙
查看>>
Ubuntu 12.04 Gedit中文乱码解决办法
查看>>
修改symfony sfDoctrineGuardPlugin验证密码的方法
查看>>
Vbird的Linux私房菜学习笔记之正则表达式-特殊字符
查看>>
数据的作用域
查看>>
js中括号用于自执行测试
查看>>