golang 写文件--详细解释
1,不覆盖指定的文件
先看代码怎么写,下面再具体解释.
func writeToFile(msg string)  {
	f, err := os.OpenFile("/home/mingbai/del/koala.log", os.O_WRONLY&os.O_CREATE, 0666)
	if err != nil {
		log.Println(err.Error())
	}
	_, err = f.Write([]byte(msg))
	if err != nil {
		log.Println(err.Error())
	}
	f.Close()
}
OpenFile 这个函数不那么好理解,解释一下. 第一个参数 就是文件路径.
第二个参数是一个 文件打开方式的flag是读是写 还是读写;是追加还是清空等, 第一种类型同第二种类型可用'|' (与或非的或)操作连接,表示两个都要. 其实你还可以加三个,比如:os.O_WRONLY|os.O_CREATE|os.O_APPEND 表示写模式打开,没有则创建且追加的方式写入.
第三个参数是操作文件的权限, 就是Linux 文件权限的那种4 读,2 写, 1 执行; 可累加.比较常见,不多解释了.
flag 有下面这些参数可选:
// Flags to OpenFile wrapping those of the underlying system. Not all
// flags may be implemented on a given system.
const (
	// Exactly one of O_RDONLY, O_WRONLY, or O_RDWR must be specified.
	O_RDONLY int = syscall.O_RDONLY // open the file read-only.
	O_WRONLY int = syscall.O_WRONLY // open the file write-only.
	O_RDWR   int = syscall.O_RDWR   // open the file read-write.
	// The remaining values may be or'ed in to control behavior.
	O_APPEND int = syscall.O_APPEND // append data to the file when writing.
	O_CREATE int = syscall.O_CREAT  // create a new file if none exists.
	O_EXCL   int = syscall.O_EXCL   // used with O_CREATE, file must not exist.
	O_SYNC   int = syscall.O_SYNC   // open for synchronous I/O.
	O_TRUNC  int = syscall.O_TRUNC  // truncate regular writable file when opened.
)
英文版不想看? 没事儿, 我这还有中文版!
    O_RDONLY 以只读文式打开文件。
    O_WRONLY 以只写方式打开文件。
    O_RDWR 以读写方式打开文件
    O_APPEND 以追加方式打开文件,写入的数据将追加到文件尾。
    O_CREATE 当文件不存在时创建文件。
    O_EXCL 与 O_CREATE 一起使用,当文件已经存在时 Open 操作失败。
    O_SYNC 以同步方式打开文件。每次 write 系统调用后都等待实际的物理 I/O 完成后才返回,默认(不使用该标记)是使用缓冲的,也就是说每次的写操作是写到系统内核缓冲区中,等系统缓冲区满后才写到实际存储设备。
    O_TRUNC 如果文件已存在,打开时将会清空文件内容。必须于 O_WRONLY 或 O_RDWR 配合使用。截断文件,需要有写的权限。
2, ioutil 会覆盖文件的内容
ioutil 也能很方便的读写文件,但是类似下面这样写会覆盖文件的内容,有时候不符合需求.
func writeToFile2(msg string)  {
	if err := ioutil.WriteFile("/home/mingbai/del/koala.log", []byte("hello"), 777); err != nil{
		os.Exit(111)
		log.Println(err.Error())
	}
}
有用的话点个赞哦~
golang 写文件--详细解释的更多相关文章
- Golang写文件的坑
		
Golang写文件一般使用os.OpenFile返回文件指针的Write方法或者WriteString或者WriteAt方法,但是在使用这三个方法时候经常会遇到写入的内容和实际内容有出入,因为这几个函 ...
 - SpringBoot-02:SpringBoot中的POM文件详细解释
		
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 我把pom文件,以及它的详细解释发出来 <?xml version="1.0" en ...
 - golang——写文件和读文件
		
之前聊过,操作文件——读写文件,直接调用接口即可. 如果是一直写入操作,写入操作一直进行的,免不了会有,有时一大批数据过来,有时没有一条数据. 鉴于此场景,选择用select....channel 的 ...
 - golang 写文件
		
package main import ( "bufio" "fmt" "io" "os" ) func main() ...
 - in文件注意事项及详细解释
		
lammps做分子动力学模拟时,需要一个输入文件(input script),也就是in文件,以及关于体系的原子坐标之类的信息文件(data file)和势文件(potential file).lam ...
 - 关于 /proc/sys/net/ipv4/下 文件的详细解释
		
关于 /proc/sys/net/ipv4/下 文件的详细解释: 1) /proc/sys/net/ipv4/ip_forward 该文件表示是否打开IP转发. 0,禁止 1,转 ...
 - in文件注意事项及详细解释(转载)
		
转载自:https://www.cnblogs.com/sysu/p/10817315.html 和 https://www.cnblogs.com/panscience/p/4953940.h ...
 - [Go] golang创建目录写文件判断文件
		
package main import ( "log" "os" ) func main() { //创建目录 os.Mkdir("test" ...
 - golang的写文件测试
		
package main import ( "os" "strings" "time" "fmt" "strc ...
 
随机推荐
- 比物理线程都好用的C++20的协程,你会用吗?
			
摘要:事件驱动(event driven)是一种常见的代码模型,其通常会有一个主循环(mainloop)不断的从队列中接收事件,然后分发给相应的函数/模块处理.常见使用事件驱动模型的软件包括图形用户界 ...
 - UI设计师、平面设计师常用的网站大全,初学者必备,大家都在用!
			
UI设计师.平面设计师常用的网站大全,初学者必备,大家都在用! 国外的花瓣--Pinterest • The world's catalog of ideas 颜格视觉--app界面设计大全--电商. ...
 - [Python] 可变/不可变类型 & 参数传递
			
与c/c++不同,Python/Java中的变量都是引用类型,没有值类型 Python赋值语句由三部分构成,例如: int a = 1 类型 标识 值 标识(identity):用于唯一标识 ...
 - 如何在 CentOS 8 中安装 Cockpit Web 控制台
			
如何在 CentOS 8 中安装 Cockpit Web 控制台 [日期:2019-10-31] 来源:Linux公社 作者:醉落红尘 [字体:大 中 小] 在本文中,我们将帮助您在CentOS ...
 - Ansible_常用文件模块使用详解
			
一.Ansibel常用文件模块使用详解 1.file模块 1️⃣:file模块常用的参数列表: path 被管理文件的路径 state状态常用参数: absent 删除 ...
 - 如何查看自己的电脑 CPU 是否支持硬件虚拟化
			
引言 在你安装各种虚拟机之前,应该先测试一下自己的电脑 CPU 是否支持硬件虚拟化. 如果你的电脑比较老旧,可能不支持硬件虚拟化,那么将无法安装虚拟机软件. 如何查看自己 CPU 是否支持硬件虚拟化 ...
 - 思考一个问题STM32的
			
如果一个定时中断刚刚进入中断服务函数 但是服务函数执行时间太长 又一次触发了中断 会怎样
 - 矩阵中的路径 DFS+剪枝
			
给定一个 m x n 二维字符网格 board 和一个字符串单词 word .如果 word 存在于网格中,返回 true :否则,返回 false . 单词必须按照字母顺序,通过相邻的单元格内的字母 ...
 - vue+element-ui, el-upload组件 文件上传之前return false,会自动调用文件移除回调问题
			
日常搬砖的时候,项目中在使用element-ui的上传组件,但是当我在文件上传文件之前的回调里面做了些文件格式的二次校验和文件大小的校验的时 然后 return false 会发现调用 文件移除的回调 ...
 - Scrapy中的错误
			
TabError: Inconsistent use of tabs and spaces in indentation 需要将 .py 文件中的使用 tab 做的空格符删掉,打成空格符.任何一个 ...