文件操作知识详解
一、流、
1、定义:数据源(文件)到程序(内存)经历的路径;
2、输入流与输出流:输入流是写文件(文件到内存的路径),输出流是读文件(内存到文件的路径);
3、os.File封装所有的文件操作,File是结构体;
二、打开文件和关闭文件
func main(){
file,err:=os.Open("G:\\Goproject\\goFile.txt")
defer file.Close() //关闭文件句柄
if err!=nil{
fmt.Println("文件句柄获取错误")
return
}
fmt.Println(file) //这里获得文件的句柄,是指针类型
}
三、读取文件
文件的读取都是带缓冲区的方式,在读取的时候都需要建立缓冲区bufio.NewReader()
然后在使用缓冲区中的ReadString函数来设置读取文件尾,读取文件
func Read(){
file,err:=os.Open("G:\\Goproject\\goFile.txt")
defer file.Close()
if err!=nil{
fmt.Println("文件路径发生错误")
}
reader:=bufio.NewReader(file) //建立文件缓冲区
for{
str,err:=reader.ReadString('\n')
fmt.Println(str)
if err==io.EOF{
fmt.Println("文件读取完毕")
break
}
}
}
四、写文件
写文件的时候,需要采用os.OpenFile方法
第一个参数是文件路径名字,第二个参数是下图所示,第三个是linux系统上所需参数
和读取文件的时候一样,写文件的时候一样需要建立缓冲区,然后使用缓冲区的WriteString方法,但是由于是带缓冲的数据,所以需要使用Flush方法冲洗
func Write(){
file,err:=os.OpenFile("G:\\Goproject\\goFile1.txt",os.O_WRONLY|os.O_RDONLY|os.O_CREATE,0666)
defer file.Close()
if err!=nil{
fmt.Println("打开文件获取句柄失败")
}
writer:=bufio.NewWriter(file)//建立缓冲区
for i:=0;i<5;i++{
writer.WriteString("hello")
}
writer.Flush()
}
文件的覆盖,增加内容只需要修改第二个参数即可,这里不多说明
五、文件拷贝
文件的拷贝需要使用io.Copy方法,io.Copy(reader,writer)
reader代表读取缓冲区,writer表示写缓冲区
只需要将需要拷贝的文件建立读缓冲区,拷贝点文件建立写缓冲区,调用方法即可
如果看完这篇文章对你们有帮助,求大家点赞支持,谢谢