lua遍历文件目录

用lua遍历文件目录,收集特定类型的文件:

 1 local LINUX = "linux"
 2 local WIN = "win"
 3 local platform = WIN
 4
 5 local need_the_filetype = function(tfiletype, filename)
 6     for k, v in pairs(tfiletype) do
 7         if (v == ".") or (v == ".*") then
 8             return true
 9         end
10
11         local from, to = string.find(filename, "%" .. v)
12         while from do
13             local f, t = string.find(filename, "%" .. v, to)
14             if not(f) then
15                 break
16             end
17             from, to = f, t
18         end
19
20         if from and (to == string.len(filename)) then
21             return true
22         end
23     end
24     return false
25 end
26
27 local function scan_dir_file(path, tfiletype, tfilename)
28     path = path or "./"
29     tfiletype = tfiletype or {"."}
30     tfilename = tfilename or {}
31
32     local cmd = "ls " .. path
33     if (platform == WIN) then
34         cmd = ‘dir "‘ .. path .. ‘" /b‘
35     end
36     local popen = io.popen(cmd)
37     if popen then
38         for filename in popen:lines() do
39             if (string.find(filename, "%.")) then
40                 if need_the_filetype(tfiletype, filename) then
41                     tfilename[#tfilename + 1] = {path = path, name = filename,}
42                 end
43             else
44                 scan_dir_file(path .. filename .. "/", tfiletype, tfilename)
45             end
46         end
47     end
48     return tfilename
49 end
50
51 ---------------------------------
52 -- interface
53 --
54 scan = {
55     walk = function(path, tfiletype, tfilename)
56         return scan_dir_file(path, tfiletype, tfilename)
57     end,
58 }
59
60 --------------------------------
61 -- test
62 --
63 local t = scan.walk()
64 for k, v in pairs(t) do
65     print(k, v.path, v.name)
66 end
时间: 2024-10-19 10:12:21

lua遍历文件目录的相关文章

【Lua】Lua + openresty遍历文件目录

OpenResty (也称为 ngx_openresty)是一个全功能的 Web 应用服务器,它打包了标准的 Nginx 核心,很多的常用的第三方模块,以及它们的大多数依赖项. 今天用OpenResty + lua来遍历指定目录,返回json字符串 我们用Lua来遍历文件目录,并用nginx来访问lua文件,使其返回这个目录的json字符串. Lua代码: 1 local lfs = require("lfs") 2 3 function getType(path) 4 return

java基础:递归应用---遍历文件目录

一:递归相关知识 程序调用自身的编程技巧称为递归( recursion). 一个过程或函数在其定义或说明中又直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量.递归的能力在于用有限的语句来定义对象的无限集合.用递归思想写出的程序往往十分简洁易懂. 一般来说,递归需要有边界条件.递归前进段和递归返回段.当边界条件不满足时,递归前进:当边界条件满足时,递归返回

PHP文件操作:遍历文件目录

1 <?php 2 /*遍历目录,列出目录中的文件 3 * array scandir(string $directory [,int $sorting_order]) 4 * $directory为待遍历目录的路径名,$sorting_order为可选参数,设置文件的降序或者升序排列 5 * */ 6 $path='./'; //为当前目录 7 if(file_exists($path)){ 8 $files_asc=scandir($path); 9 $files_desc=scandir(

lua遍历文件

看了不少人的,主要还是错误处理有点问题,不多说了 贴代码: require "lfs" function getpathes(rootpath, pathes) pathes = pathes or {} ret, files, iter = pcall(lfs.dir, rootpath) if ret == false then return pathes end for entry in files, iter do local next = false if entry ~=

Lua 遍历Linux目录下的文件夹

代码如下,里面有注释,应该能看懂. function getFile(file_name) local f = assert(io.open(file_name, 'r')) local string = f:read("*all") f:close() return string end function writeFile(file_name,string) local f = assert(io.open(file_name, 'w')) f:write(string) f:cl

java遍历文件目录

参考地址:http://blog.csdn.net/huang_xw/article/details/7058296 [遍历文件目录] public void printFileList(File file, int count){ if (file.isDirectory()) { System.out.println(printTab(count) + "-" + file.getName()); File[] files = file.listFiles(); for (int

Java文件操作---递归遍历文件目录

在读取文件降序输出单词及其个数的基础上,将txt文件存入文件夹中,开始递归遍历文件目录,之后输出txt文件中的单词及其个数,仍然是降序排列. 代码如下 1 import java.io.BufferedReader; 2 import java.io.File; 3 import java.io.FileReader; 4 import java.util.Map; 5 import java.util.Map.Entry; 6 import java.util.ArrayList; 7 imp

递归与非递归遍历文件目录

递归遍历目录的缺点:遇到多层级目录时,层级越多,堆栈的负荷越大. [java] view plaincopyprint? import java.io.File; import java.util.LinkedList; /* * 采用非递归方式遍历目录及其子目录的文件 */ public class ProcessDirectory { public static int num;//文件总量 public static void main(String[] args) { String pa

遍历文件目录下所有图片并保存到统一路径

遍历文件夹下所有文件(包括文件夹),找到所有图片并将其统一保存至目标文件夹下: DirectoryInfo theFolder = new DirectoryInfo(@"I:\ph\"); //目标文件夹 DirectoryInfo[] dirInfo = theFolder.GetDirectories(); //遍历文件夹 foreach (DirectoryInfo NextFolder in dirInfo) { // this.listBox1.Items.Add(Next