【懒人精灵】使用go获取目录下的文件信息

懒人精灵安卓版获取目录下的文件,有两种方式。

lua方法

-- 获取指定目录下视频文件信息数组
function getCatalogVideo(catalogPath,formt)
    local videoTb = {}
    catalogPath = 辅助_确保路径以斜杠结尾(catalogPath)  -- 在循环前处理一次路径
    for file in lfs.dir(catalogPath) do
        if file ~= '.' and file ~= '..' then
            -- 遍历文件夹,获取扩展名
            local ext = CFILE:getExtension(file) -- 'mp4'
            -- print(ext ,lastFileExt)
            if ext == formt then
                local path = catalogPath .. file
                local attr = lfs.attributes(path)   --子目录或文件属性
                table.insert(videoTb, {
                    name = file,
                    path = path,
                    attr = attr
                })
            end
        end
    end
    return videoTb
end

go方法

// FileInfo 结构体用于存储文件信息
type FileInfo struct {
    Name         string `json:"name"`         // 文件名
    Path         string `json:"path"`         // 文件完整路径
    ModifiedTime int64  `json:"modifiedTime"` // 最后修改时间(时间戳)
    Size         int64  `json:"size"`         // 文件大小(字节)
}

// 获取指定目录下的文件信息
// 参数:
//   dirPath: 目录路径
//   fileExt: 文件扩展名(如"txt"、"png"等),如果为空则返回所有文件
// 返回值:
//   string: JSON格式的文件信息列表
func GetFilesInfo(dirPath, fileExt string) string {
    var files []FileInfo

    // 确保目录路径以斜杠结尾
    dirPath = EnsureTrailingSlash(dirPath)

    // 读取目录内容
    entries, err := os.ReadDir(dirPath)
    if err != nil {
        bridge.PrintLog(fmt.Sprintf("Error: 读取目录 %s 失败: %v", dirPath, err))
        return "[]"
    }

    // 遍历目录中的每个条目
    for _, entry := range entries {
        // 跳过目录
        if entry.IsDir() {
            continue
        }

        // 如果指定了文件扩展名,检查文件扩展名是否匹配
        if fileExt != "" {
            ext := GetFileExtension(entry.Name())
            if ext != fileExt {
                continue
            }
        }

        // 获取文件信息
        info, err := entry.Info()
        if err != nil {
            bridge.PrintLog(fmt.Sprintf("Error: 获取文件 %s 信息失败: %v", entry.Name(), err))
            continue
        }

        // 创建文件信息对象并添加到切片
        fileInfo := FileInfo{
            Name:         info.Name(),
            Path:         dirPath + info.Name(),
            ModifiedTime: info.ModTime().Unix(),  // 使用Unix()获取时间戳
            Size:         info.Size(),
        }
        files = append(files, fileInfo)
    }

    // 将文件信息切片转换为JSON
    jsonBytes, err := json.Marshal(files)
    if err != nil {
        bridge.PrintLog(fmt.Sprintf("Error: 转换文件信息为JSON失败: %v", err))
        return "[]"
    }

    return string(jsonBytes)
}

实现过程:

  1. 定义了一个 FileInfo 结构体,用于存储文件的各种信息
  2. GetFilesInfo 方法实现了以下功能:
    • 接收目录路径和文件扩展名作为参数
    • 使用 os.ReadDir 读取目录内容
    • 根据文件扩展名过滤文件(如果指定了扩展名)
    • 收集每个文件的详细信息(名称、路径、修改时间、大小)
    • 将结果转换为 JSON 格式返回

方法特点:

  • 支持按文件扩展名过滤
  • 返回标准化的 JSON 格式数据
  • 包含错误处理和日志记录
  • 使用了 EnsureTrailingSlash 方法确保路径格式正确
1. 官方交流QQ群,添加多个不批。建议使用安卓手机或电脑申请。
飞云脚本圈: 586333520飞云脚本圈
Auto.js学习交流③群:286635606
Auto.js学习交流②群:712194666(满员)
IOS免越狱自动化测试群:691997586
2. 盗版,破解有损他人权益和违法作为,请各位会员支持正版。
3. 本站部分资源来源于用户上传和网络搜集,如有侵权请提供版权证明并联系站长删除。
4.如未特别申明,本站的技术性文章均为原创,未经授权,禁止转载/搬运等侵权行为。
5.全站所有付费服务均为虚拟商品,购买后自动发货。售出后概不接受任何理由的退、换。注册即为接受此条款。
6.如果站内内容侵犯了您的权益,请联系站长删除。
飞云脚本 » 【懒人精灵】使用go获取目录下的文件信息

企业级大数据智能营销管理系统

源码转让