持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第14天,点击查看活动详情
文章概览
- 读写文件操作
- 命令行参数
写文件操作
os.OpenFile是一个更一般性的文件打开函数,它会使用指定的选项(如O_RDONLY等)、指定的模式(如0666等)打开指定名称的文件。如果操作成功,返回的文件对象可以用于I/O操作,如果出错,错误底层数据类型是*PathError。
写文件的方式
方式一
- 创建一个新文件,谢写入内容。
- 打开一个已存在的文件,把原来的内容覆盖成为新的内容。
- 打开一个已存在的文件,在原来的内容追加内容。
f1, err1 := OpenFile("./output1.txt")
if err1 != nil {
log.Fatal(err1.Error())
}
defer f1.Close()
n, err1 := io.WriteString(f1, "测试文件1") //写入文件(字符串)
if err1 != nil {
log.Fatal(err1.Error())
}
fmt.Printf("写入 %d 个字节\n", n)
- 使用defer file.Close()及时关闭file句柄。
- 写入时,使用带缓存的*Writer
- 因为writer是带缓存的,因此在调用WriterString方法时,其实内容是先写入到缓存中的,所以需要调用Flush方法,将缓冲区的数据真正的写入到文件中,否则文件中没有数据。
命令行参数的使用
有时候需要获取到命令行输入的各种参数,这时候就要用到命令行参数,os.Args是一个string的切片,用来存储所有的命令行参数。
flag包解析命令行参数
前面的方式是比较原生的方式,对解析参数不是特别的方便,特别是带有指定参数形式的命令行。而使用flag包可以轻松的实现解析命令行参数,并且参数的顺序也可以随意。
func main() {
if len(os.Args)<0{
return
}
fmt.Printf("====%s====\n", os.Args[1])
fmt.Printf("====%s====\n", os.Args[2])
fmt.Printf("====%s====\n", os.Args[3])
fmt.Printf("%s\n", os.Args)
}