GoLang 读取指定文件夹下的文件目录信息

Golang 读取指定文件下的文件目录信息


基础语法:
var FileInfo []os.FileInfo
var err  error
var relativePath string
if FileInfo,err := ioutil.ReadDir( relativePath ); err != nil{
	// 错误处理
}
// 使用 FileInfo 变量
  • 参数说明
参数名称 说明 备注
relativePath 组成: 相对路径 + 文件夹名称
实例: “./log”
相对路径是相对于编译后的 *.exe 执行文件所在的位置

实例
  • 读取 同级目录下的 img 文件 里面所有的图片名称
package main

import (
	"fmt"
	"io/ioutil"
	"os"
)

func main(){
	var FileInfo []os.FileInfo
	var err error
	relativePath := "./img"
	
	if FileInfo,err = ioutil.ReadDir( relativePath ); err != nil{
		fmt.Println("读取 img 文件夹出错")
		return
	}

	for _,fileInfo := range FileInfo {
		fmt.Println( fileInfo.Name())
	}
}
  • 读取 指定目录下 [ 包含嵌套文件 ]所有的 *.txt 文件的文件名 [ 包含相对路径 ]
  • readTxt.go 文件
package models

import (
	"errors"
	"io/ioutil"
	"os"
)

type ReadTxt struct {
	FilesName []string
	FilesInfo []os.FileInfo
}

func (r *ReadTxt) ReadAllTxtFiles(path string) (err error) {

	if r.FilesInfo, err = ioutil.ReadDir(path); err != nil {
		err = errors.New("读取文件失败: " + path)
		return
	}
	var reg = regexp.MustCompile(`.\.{1}txt$`)
	for _, fileInfo := range r.FilesInfo {
		if fileInfo.IsDir() {
			r.ReadAllTxtFiles(path + "/" + fileInfo.Name())
		} else {
			if reg.MatchString(fileInfo.Name()){
				r.FilesName = append(r.FilesName, path+fileInfo.Name())
			}
		}
	}

	return
}
  • main.go 文件
package main
// 根据实际情况导入 models 包
func main() {
	readTxt := new (models.ReadTxt)
	if err := readTxt.ReadAllTxtFiles("./log"); err != nil {
		fmt.Println(err.Error())
	}else {
		fmt.Println(readTxt.FilesName)
	}
}

你可能感兴趣的:(GoLang)