基本信息
源码名称:golang监控目录变化
源码大小:0.83M
文件格式:.zip
开发语言:Go
更新时间:2019-03-30
   友情提示:(无需注册或充值,赞助后即可获取资源下载链接)

     嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300

本次赞助数额为: 2 元 
   源码介绍


package main

import (
	"container/list"
	"encoding/csv"
	_ "encoding/json"
	"fmt"
	"os"
	"path/filepath"
	"time"

	"github.com/fsnotify/fsnotify"
)

type Fileinfo struct {
	Filepath string `json:"Filepath"`
	FileName string `json:"FileName"`
	ModTime  string `json:"ModTime"`
	FileSize string `json:"FileSize"`
}

var outputFileName string = "filesName.txt"

func CheckErr(err error) {
	if nil != err {
		panic(err)
	}
}

func GetFullPath(path string) string {
	absolutePath, _ := filepath.Abs(path)
	return absolutePath
}

func ScanPath(path string) error {
	fullPath := GetFullPath(path)

	//listStr := list.New()
	f, err := os.Create(outputFileName)
	CheckErr(err)
	defer f.Close()
	f.WriteString("\xEF\xBB\xBF")

	filepath.Walk(fullPath, func(path string, fi os.FileInfo, err error) error {

		if nil == fi {
			return err
		}
		if fi.IsDir() { //忽略目录
			fmt.Println(fullPath   fi.Name())
			return nil
		}

		name := fi.Name()
		if outputFileName != name {

			go func() {
				f.WriteString(path   "|"   name   "|"   string(fi.Size())   "|"   fi.ModTime().Format("2006-01-02 15:04:05")   "\n")
			}()

			//listStr.PushBack(path   "|"   name   "|"   string(fi.Size())   "|"   fi.ModTime().Format("2006-01-02 15:04:05"))
		}

		return nil
	})
	return nil
	//OutputFilesName(listStr)
}

func ConvertToSlice(listStr *list.List) []string {
	sli := []string{}
	for el := listStr.Front(); nil != el; el = el.Next() {
		sli = append(sli, el.Value.(string))

	}
	return sli
}

func OutputFilesName(listStr *list.List) {
	files := ConvertToSlice(listStr)
	//sort.StringSlice(files).Sort()// sort

	f, err := os.Create(outputFileName)
	//f, err := os.OpenFile(outputFileName, os.O_APPEND | os.O_CREATE, os.ModeAppend)
	CheckErr(err)
	defer f.Close()

	f.WriteString("\xEF\xBB\xBF")
	writer := csv.NewWriter(f)
	length := len(files)
	for i := 0; i < length; i   {
		writer.Write([]string{files[i]})
	}

	writer.Flush()
}

func main() {
	start := time.Now()
	fmt.Println(ScanPath("E:\\微"))
	fmt.Println("处理时间约 %f f% 秒", time.Now().Sub(start).Seconds())
	fmt.Println("done!")
}