文件操作知识详解

文件操作知识详解

一、流

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表示写缓冲区
只需要将需要拷贝的文件建立读缓冲区,拷贝点文件建立写缓冲区,调用方法即可

如果看完这篇文章对你们有帮助,求大家点赞支持,谢谢

猜你喜欢

转载自blog.csdn.net/yyq1102394156/article/details/114085291