文件的打开,读写操作
-
打开和创建
-
创建:
os.Create(文件路径)
,如果路径下没有则创建,如果存在,则清除所有信息; -
打开
-
f,err := os.Open(文件路径)
,只读权限,返回file指针;文件不存在,打开失败; -
f,_ := os.OpenFile(文件路径,读写模式,权限)
,以只读,只写,读写方式打开文件,文件不存在,则打开失败;也可以用来打开目录;-
参数1:表示文件路径,可以使用相对路径或绝对路径;
-
参数2:表示读写模式,常见的有:O_RDONLY(),O_WRONLY(),O_RDWR(),O_APPEND()
-
参数3:用0-7表示权限范围,0:没有任何权限;1:执行权限,可执行文件;2:写权限;3:写与执行权限;4:读权限;5:读与执行权限;6:读与写权限;7:读、写、执行权限;**常用的是6 ! **
-
打开目录:
f,err := os.OpenFile(文件路径,O_RDONLY,os_ModeDir)
->打开目录;[]Fileinfo,err := f.Readdir(int)
->-1代表读取目录中的所有目录项;type FileInfo interface { Name() string // 文件的名字(不含扩展名) Size() int64 // 普通文件返回值表示其大小;其他文件的返回值含义各系统不同 Mode() FileMode // 文件的模式位 ModTime() time.Time // 文件的修改时间 IsDir() bool // 等价于Mode().IsDir() Sys() interface{} // 底层数据来源(可以返回nil) }
-
-
-
-
-
读写
- 读
reader := bufio.NewReader(*file)
->创建一个带有缓冲区的reader;buf,_ := reader.ReadBytes('拆分符')
->从reader的缓冲区中,读取指定长度的数据,取决于参数dlime拆分符;判断到文件结尾:if err!=nil &&err == io.EOF
->文件结束标记EOF,是要单独读一次获取到的。- 缓冲区:内存中的一块区域,用来减少物理磁盘访问操作。
- 写
- 按字符串写:
WriteString(string)
–> 写入字符的个数,eg:n,err := f.WriteString("1,2,3")
,回车换行:Windows下是\r\n
,Linux下是\n
- 按字节写:
writeAt([]byte,int64)
->在文件中指定待写入数据[]byte
,偏移量offset int64
;通常与Seek
函数搭配使用; - 按位置写:
Seek(offset,whence)
->参1:偏移量,正数表示向文件尾偏移;负数表示向文件头偏移;参2:偏移起始位置:io.SeekStart:文件起始位置,io.SeekCurrent:文件当前位置,io.SeekEnd:文件结束位置。文件返回值:表示从文件起始位置,到当前文件读写指针位置的偏移量;
- 按字符串写:
- 按字节读写:read(),write()
- 读