zoukankan      html  css  js  c++  java
  • [Go] 获取文件夹下面指定模式的文件列表 , 并且获取文件创建时间删除超过30分钟的文件

    想要获取某个目录下以sess_开头的所有文件 , 如果是linux下可以直接sess*  , go标准库中也有同样的函数可以实现

    files,_:=filepath.Glob("/sess_*")

    files就是全部的文件列表 , 直接for range循环就可以了

    要对winows和linux分开处理 , windows下获取文件的创建时间

    func GetFileCreateTime(path string) int64{
        osType := runtime.GOOS
        fileInfo, _ := os.Stat(path)
        if osType == "windows" {
            wFileSys := fileInfo.Sys().(*syscall.Win32FileAttributeData)
            tNanSeconds := wFileSys.CreationTime.Nanoseconds()  /// 返回的是纳秒
            tSec := tNanSeconds/1e9                             ///秒
            return tSec;
        }
        return time.Now().Unix()
    }
    

    linux下获取文件的创建时间

    func GetFileCreateTime(path string) int64{
        osType := runtime.GOOS
        fileInfo, _ := os.Stat(path)
        if osType == "linux" {
            stat_t := fileInfo.Sys().(*syscall.Stat_t)
            tCreate := int64(stat_t.Ctim.Sec)
            return tCreate
        }
        return time.Now().Unix()
    }
    

    当在window下编译运行的时候 , linux部分代码会报错 , 需要把这个文件单独拿出来变成比如  test_linux.go , 这样windows下不会报错

    还有一种方式是在文件开头加上注释  , 这样也表示在windows下不会被编译

    //+build !windows

     

    后台任务获取指定文件创建时间并且删除掉超过30分钟的文件完整代码是:

    //+build !linux
    
    package controller
    
    import (
        "github.com/taoshihan1991/imaptool/config"
        "os"
        "path/filepath"
        "runtime"
        "syscall"
        "time"
    )
    var osType = runtime.GOOS
    const expireTime=30*60
    //检测权限文件是否过期,超过30分钟删除掉
    func TimerSessFile(){
        go func() {
            for {
                time.Sleep(time.Second*10)
                files,_:=filepath.Glob(config.Dir+"sess_*")
                for _,file:=range files{
                    fileInfo, _ := os.Stat(file)
                    var createTime int64
                    now:=time.Now().Unix()
                    if osType == "windows" {
                        wFileSys := fileInfo.Sys().(*syscall.Win32FileAttributeData)
                        tNanSeconds := wFileSys.CreationTime.Nanoseconds()  /// 返回的是纳秒
                        createTime = tNanSeconds/1e9                             ///
                    }
                    diffTime:=now-createTime
                    if diffTime>expireTime{
                        os.Remove(file)
                    }
                }
            }
        }()
    }

      

  • 相关阅读:
    Charles的基本功能使用
    模拟器的代理功能
    LoadRunner参数包含逗号
    MySQL 与 [charlist]% 通配符
    MySQL 删除重复项并保留其中一个
    Selenium grid 分布式测试搭建(二)
    Selenium grid 分布式测试搭建(一)
    chromedriver与chrome版本映射表 与chromedriver 下载地址
    Selenium 打开 Chrome 链接框只有 Data;
    Xpath 小结
  • 原文地址:https://www.cnblogs.com/taoshihan/p/13087818.html
Copyright © 2011-2022 走看看