zoukankan      html  css  js  c++  java
  • Go-25-文件管理

    FileInfo接口

    package main
    
    import (
        "fmt"
        "os"
    )
    
    // FileInfo 接口文件的信息包括文件名、文件大小、修改权限、修改时间等。
    
    func main() {
        filePath:="C:\Users\sixinshuier\Desktop\分布式训练\分布式训练.txt"
        fileInfo,err:=os.Stat(filePath)
        if err!=nil{
            fmt.Println(err)
        }else {
            fmt.Println("文件名:",fileInfo.Name())
            fmt.Println("文件大小",fileInfo.Size())
            fmt.Println("文件权限",fileInfo.Mode())
            fmt.Println("是否是文件夹",fileInfo.IsDir())
            fmt.Println("修改时间",fileInfo.ModTime())
        }
    }

    输出

    文件名: 分布式训练.txt
    文件大小 0
    文件权限 -rw-rw-rw-
    是否是文件夹 false
    修改时间 2020-05-28 16:46:51.7140497 +0800 CST

    文件路径:

    filepath.IsAbs() : 判断是否绝对路径
    
    filepath.Rel(): 获取相对路径
    
    filepath.Abs() :获取绝对路径
    
    path.join(): 拼接路径

    创建目录:

    os.MKdir()仅创建一层目录

    os.MKdirAll()创建多层目录。

    创建文件:

    os.Create()创建文件,如果文件存在,会将其覆盖。

    打开和关闭文件:

    os.OpenFile(filename,mode,perm)
    mode:文件打开方式
    perm:文件的权限。文件不存在时创建文件,需要指定权限

    删除文件:

    os.Remove(filename)

    文件读取:

    package main
    
    import (
        "fmt"
        "io"
        "os"
    )
    
    // 文件读取
    func main() {
        filePath:="C:\Users\sixinshuier\Desktop\分布式训练\分布式训练.txt"
        file,err:=os.Open(filePath)
        if err!=nil{
            fmt.Println(err)
        }else {
            bs:= make([]byte,1024*128,1024*128)
            for{
                n,err:=file.Read(bs)
                if n==0 || err==io.EOF {
                    fmt.Println("读取文件结束!")
                    break
                }
                fmt.Println(string(bs[:n]))
            }
        }
        file.Close()
    }

    文件写入:

    package main
    
    import (
        "fmt"
        "os"
    )
    
    // 文件写入
    
    func main() {
        filePath:="C:\Users\sixinshuier\Desktop\分布式训练\分布式训练.txt"
        file,err:=os.Open(filePath)
        defer file.Close()
        if err!=nil{
            fmt.Println(err)
        }else {
            n,err:=file.Write([]byte("test write...."))
            if err!=nil{
                fmt.Println(err)
            }else {
                fmt.Println(n)
            }
        }
    }

    ioutil包:

    ReadFile()  读取文件中所有的数据,返回读取的字节数组

    WriteFile()向指定文件写入数据,如果文件不存在,则创建文件,写入数据之前清空文件

    bufio

    bufio实现了带缓冲的I/O操作,达到高效读写。

     bufio包对io包下的对象Reader、Writer进行包装,分别实现了io.Reader和io.Writer接口,提供了数据缓冲功能,能够一定程度减少大块数据读写带来的开销,所以bufio比直接读写更快。

    package main
    
    import (
        "bufio"
        "fmt"
        "io"
        "os"
    )
    
    // bufino 读取文件
    
    func main() {
        filePath:="C:\Users\sixinshuier\Desktop\分布式训练\分布式训练.txt"
        // 打开文件
        file,err:=os.Open(filePath)
        defer file.Close()
        if err!=nil{
            fmt.Println(err)
        }else {
            // 创建缓冲区
            reader:= bufio.NewReader(file)
            fmt.Printf("%T",reader)
            for  {
                // 读取文件
                s,err:=reader.ReadString('
    ')
                if err==io.EOF{
                    break
                }else {
                    fmt.Println(s)
                }
    
            }
        }
    }
  • 相关阅读:
    资深技术Leader曹乐:如何成为技术大牛
    深入理解golang: interface
    Redis主体流程分析
    为什么我们总爱讨论技术与业务之间的那些是是非非?
    [产品]九卷读书:产品的视角-产品思维框架
    go http server 编程实践及源码分析
    [产品]九卷读书: 产品的视角-产品经理能力模型
    [产品]:腾讯8分钟产品课
    Golang gRPC学习(02): 编写helloworld服务
    括号生成
  • 原文地址:https://www.cnblogs.com/shix0909/p/12992521.html
Copyright © 2011-2022 走看看