Go - 35 Go 文件操作

 基本介绍   
    文件对我们并不陌生,文件是数据源(保存数据的地方)的一种,比如大家经常使用的word文档,txt文件,excel文件...都是文件。文件最主要的作用就是保存数据,它既可以保存一张图片,也可以保存视频,声音...
    文件在程序中是以流的形式来操作的;
    流:数据在数据源(文件) 和程序(内存)之间经历的路径;
    输入流(读文件):数据从数据源(文件)到程序(内存)的路径;
    输出流(写文件):数据从程序(内存)到数据源(文件)的路径;
 
主要是os包里的File的结构体来对文件进行操作; File代表一个打开的文件对象。
 
常用的文件操作函数和方法
    打开一个文件进行读操作;
        os.Open(name string) (*File, error)
    关闭一个文件:
        File.Close()
    小小的demo
        // 通过os 打开一个文件    
        // file 的叫法:file对象, file指针, file 文件句柄     
        file, error := os.Open("e:/text01.txt")     
        if error != nil {         
            fmt.Println("open file error=", error)     
        }     
        // 输出下文件,看看文件是什么? 文件就是指针 *File     
        fmt.Printf("file==%v", file)  // file==&{0xc000080780}     
        // 关闭文件     
        error = file.Close()     
        if error != nil {         
            fmt.Println("close file error=", error)     
        }
 
 
写文件操作应用实例
    func OpenFile(name string, flag int, perm FileMode) (file *File, err error)
 
    说明:os.OpenFile 是一个更一般性的文件打开函数,它会使用指定的选项(如O_RDONLY等),指定的模式(如0666等)打开指定名称的文件。如果操作成功,返回的文件对象可用于I/O。如果出错,错误底层类型就是 *PathError.
 
    第二个参数:文件打开模式(可以组合);
    第三个参数:权限控制(linux/unix下使用)
        r --> 4
        w --> 2
        x --> 1
 
实际案例:
    // 创建一个新文件,写入内容 5句 "hello, Gardon"    
    // 1.打开文件 e:/abc_w.txt     
    filePath := "e:/abc_w.txt"     
    file, err := os.OpenFile(filePath, os.O_WRONLY | os.O_CREATE, 0666)     
    if err != nil {         
        fmt.Println("open fiel err=", err)         
        return      
    }     
    // 及时关闭file句柄     
    defer file.Close()     
    // 准备写入内容     
    str := "hello, Gardon\n"     
    // 写入时,使用带缓存的 *Writer     
    writer := bufio.NewWriter(file)     
    for i:=0; i < 5; i ++ {         
        writer.WriteString(str)     
    }     
    // 因为writer是带缓存,因此在调用WriteString方法时,其实     
    // 内存是先写入到缓存的,所以需要调用Flush方法,将缓存的数据     
    // 真正写入到文件中,否则文件中会没有数据     
    writer.Flush()
 
判断文件是否存在
    golang判断文件或者文件夹是否存在的方法使用os.Stat() 函数返回的错误值进行判断:
        1.如果返回的错误为nil,说明文件或者文件夹存在
        2.如果返回的错误类型使用os.IsNotExist() 判断为true,说明文件或者文件夹不存在
        3.如果返回的错误为其他类型,则不确定是否存在
    
    实现的功能函数
        func PathExists(filePath string) (bool, error) {    
            _, err := os.Stat(filePath)     
            if err == nil { // 为空说明存在         
                return true, nil      
            }     
            if os.IsNotExist(err) {  // 不存在 返回 false         
                return false, nil      
            }     
            return false, err  
        }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
posted @ 2020-12-25 16:56  以赛亚  阅读(159)  评论(0编辑  收藏  举报