ソースを参照

增加获取文件大小

a158 8 ヶ月 前
コミット
1ad806f8c8
1 ファイル変更50 行追加0 行削除
  1. 50 0
      target/utils.lua

+ 50 - 0
target/utils.lua

@@ -125,6 +125,16 @@ M.exists_file = function(filepath)
         return false
     end
 end
+-- 取文件大小
+M.file_size = function(filepath)
+    local file = io.open(filepath, "rb")
+    if not file then
+        return nil
+    end
+    local size = file:seek("end")
+    file:close()
+    return size
+end
 -- 取近N个月时间
 M.recent_months = function(n)
     local mons = {}
@@ -292,4 +302,44 @@ M.traverse_dir = function(dirpath)
     end
     return files
 end
+-- 数组是否一致(不考虑顺序)
+-- 只考虑 string 和 number/integer 类型,其它类型忽略
+M.array_equal = function(a, b)
+    -- 辅助函数:判断是否为有效类型(string 或 number)
+    local function is_valid_type(v)
+        return type(v) == "string" or type(v) == "number"
+    end
+    
+    -- 统计数组中有效类型元素的值及其出现次数
+    local function count_values(arr)
+        local counts = {}
+        for _, v in ipairs(arr) do
+            if is_valid_type(v) then
+                local key = tostring(v)  -- 统一转换为字符串作为key
+                counts[key] = (counts[key] or 0) + 1
+            end
+        end
+        return counts
+    end
+    
+    -- 统计两个数组的有效元素
+    local counts_a = count_values(a)
+    local counts_b = count_values(b)
+    
+    -- 检查 counts_a 中的所有键值对是否在 counts_b 中匹配
+    for key, count in pairs(counts_a) do
+        if counts_b[key] ~= count then
+            return false
+        end
+    end
+    
+    -- 检查 counts_b 中的所有键值对是否在 counts_a 中匹配
+    for key, count in pairs(counts_b) do
+        if counts_a[key] ~= count then
+            return false
+        end
+    end
+    
+    return true
+end
 return M