创建文件并写入内容 | 学习笔记

简介: 快速学习创建文件并写入内容

开发者学堂课程【Go 语言核心编程 - 面向对象、文件、单元测试、反射、TCP 编程创建文件并写入内】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/626/detail/9729


创建文件并写入内容

 

内容介绍

一、基本介绍

二、基本应用实例

三、基本应用实例-方式一(1)

 

一、基本介绍

首先要用到 fuc OpenFile,它是在os包里的文件。

说明: os.0penFile 是一个更一般性的文件打开函数,它会使用指定的选项(如O_RDONLY 等)、指定的模式(如0666等)打开指定名称的文件。如果操作成功,返回的文件对象可用于1/O。如果出错,错误底层类型是*PathErroro。

这个函数有以下三个参数:

1.name string。要把文件的内容写入,是文件的路径。

2.flag int, 代表打开文件的方式,可以组合。一共有以下几种方式。

const

O_RRONLY int = syscall.O_RDONLY //只读模式打开文件

O_WRONLYint = syscall.0_WRONLY //只写模式打开文件

O_RDWR int = syscall.0_RDWR //读写模式打开文件

O_APPEND int = syscall.O_APPEND//写操作时将数据附加到文件尾部

O_CREATE int = syscall.O_CREAT //如果不存在将创建一个新文件

O_EXCL int = syscall.O_EXCL // 和 O CREATE 配合使用,文件必须不存在

O_SYNC int = syscall.O_SYNC //打开文件用于同步 I/0

O_TRUNC int = syscall.0_TRUNC//如果可能,打开时清空文件

3. perm FileMode

权限控制(linux)

打开 type filemode,准确的讲,它以是的方式打开,有三个占位符。

第一个代表文件所有者的权限,第二个代表其他组,文件所在组的对文件所有的权限,还有一个是其他组所在用户的权限。

r 是用4表示的

W 是用2表示的

x 是用1表示的

在 windows 下是无用的,详情:参考尚硅谷-linux 课程。就看其中一个章节即可。

FileMode 可以指定文件是用什么权限进行控制的。文件会返回两个参数:

1. file *File, 文件指针,也就是文件句柄。

2. err error),如果打开错误,会返回一个 error 值。

 

二、基本应用实例

1.创建一个新文件,写入内容5句"hello,Gardon"。此时写的采用的是带缓存的reader,这个 writer 可以通过带缓存,来完成带缓存的内容。

2.打开一个存在的文件中,将原来的内容覆盖成新的内容10句“你好,尚硅谷!”中

3.打开一个存在的文件,在原来的内容追加内容'ABC!ENGLISH!'

4.打开一个存在的文件,将原来的内容读出显示在终端,并且追加5句"hello,北京!”

使用os.OpenFile(), bufio.NewWriter(),*Writer 的方法 WriteString 完成上面的任务.

 

三、基本应用实例-方式一(1)

第一种方式的代码实现:

新建一个文件夹

package main

import(

"fmt”

"bufio"

"os"

func main()(

//创建一个新文件,写入内容5句“hello, Gardon”

//1.打开文件 d:/abc.txt

filePath :=“d:/abc.txt"

file,err := os.OpenFile(filePath, O_WRONLY O_CREATE,0666)

if err != nil t

fmt.Printf("open file err=%v\n", err)

return

打开成功后,

//及时关闭 file 句柄

defer file.Close()

//准备写入5句“hello, Gardon"

str :="hello,Gardon\n"//\n 表示换行

//写入时,使用带缓存的 *Writer

writer := bufio.NewWriter(file)

for i:= 0;i< 5; i++ 【

writer.Writerstring(str)

//因为 writer 是带缓存,因此因此在调用 Writerstring 方法时,其实//内容是先写入到缓存的

打开 writer 的源代码,

type  Writer struct

err    error

buf   []byte

n     int

Wr    io. Writer

可以看出 writer 结构体中,先把内容写到 buf 里,然后搜索 flush,

//Flush writes any buffered data to the underlying io. Writer.

func(b*Writer)Flush()error

可以看出 flush 的作用,只有通过 flush,才能真正的将它写入到文件里去。

//因为 writer 是带缓存,因此在调用 Writerstring 方法时, 其实

//内容是先写入到缓存的,所以需要调用 Flush 方法, 将缓冲的数据

//真正写入到文件中, 否则文件中会没有数据!!!
writer . Flush()

修改问题,并运行,查看是否写入。此时写入成功。

相关文章
|
5月前
|
容器
查看文件内容命令
查看文件内容命令
46 0
|
数据库 Windows
文件的相关内容(一)
文件的相关内容(一)
|
前端开发
文件的相关内容(二)
文件的相关内容(二)
|
Linux
(二)目录及文件操作
命令:ls[选项][目录/文件] 功能:对于目录,该命令列出该目录下的所有子目录与文件。 对于文件,将列出文件名及其他
149 0
(二)目录及文件操作
|
安全 Python
【通用文件操作】删除空文件夹
对于有强迫症的人来说,空文件夹是不允许存在的东西,而电脑中文件又特别多,而且空文件夹也不好找,要一个一个删除真的是太麻烦了,今天就和大家分享一下删除空文件夹的操作。文章比较啰嗦,读者可以直接跳到最后一段。
474 0
|
Java 开发者
文件保存|学习笔记
快速学习文件保存
123 0
文件保存|学习笔记
|
分布式计算 Hadoop 开发者
修改文件夹名称| 学习笔记
快速学习修改文件夹名称
213 0
文件和文件夹的操作——文件操作
文件和文件夹的操作——文件操作
111 0