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)
            }

        }
    }
}
原文地址:https://www.cnblogs.com/shix0909/p/12992521.html