荣小菜补钙记第61期_LabVIEW之递归文件及文件夹
同步更新于 WeChat:荣小菜在补钙
大家好,我是荣小菜,本期主要讲解如何使用LabVIEW编程实现查询目标文件夹中的全部文件及文件夹。
1. 罗列文件夹函数_常用功能
该函数用于返回目标路径下当前层级的全部文件名和文件夹名,可以通过指定“类型”来选择返回的文件类型,比如设置为“*.xlsx”则只返回xlsx格式的excel文件名。
需要注意的是,与“文件对话框 Express VI”函数中“类型”参数的用法不同,罗列文件夹函数的“类型”参数只能指定单一类型。比如想要同时查找MP4和xlsx两种类型的文件,设置类型参数为“.xlsx;.mp4”是无效的。此外,一旦指定文件类型,则该函数不再返回文件夹名。
 2. 罗列文件夹函数_数据记录类型
该函数还有一个参数为“数据记录类型”,帮助文档里的讲解比较模糊,但我们可以查看什么是“数据记录”来理解该功能。
先看什么是数据记录文件,范例如下,该类型文件为LabVIEW提供的文件存储方式之一,为二进制存储方式,适合存储簇类型数据块,而读取时需要指定数据格式。数据记录文件对于文件类型(.xx)无特定要求,用户可根据需要自行设定。数据记录文件相关函数用法可查看范例,这里不再详细讲解。

因此,我们可以知道“罗列文件夹”函数中数据记录类型指的是数据记录文件的“数据格式”,该函数可以用来寻找具有特定数据格式的数据记录文件。下图为两种不同数据记录文件的数据格式。通过指定数据格式,该函数可以快速定位到拥有相应数据类型的记录文件。因此,该函数还能帮我们快速筛选具有特定数据格式的记录文件,大家可以灵活使用。


3. 遍历全部层级文件及文件夹_Demo
利用“罗列文件夹”函数,通过编写一定的逻辑,可以实现返回全部层级的文件及文件夹。代码如下。基本逻辑是遍历每一层级的文件夹,若仍存在文件夹,则继续深入层级遍历,直到不再出现文件夹。While循环最终运行次数反映了最大层级。

4. 遍历全部层级文件及文件夹_递归文件列表函数
除了自己写代码实现该功能,LabVIEW也提供了“递归文件列表”函数。函数说明见下,

其代码如下,可以看到其本质也是使用“罗列文件夹”函数来实现。可以看到,为了能够指定“类型”来返回全部文件,该函数连用了两次“罗列文件夹”函数,一个用来返回文件,另一个用来返回文件夹。可以预见,该函数的运行耗时将会翻倍。

5. 性能对比与总结
通过对比LabVIEW自带“递归文件”函数和我们Demo函数可以看出,Demo函数的运行速度是前者的2倍,基本符合我们上面的预计,因为前者为了功能牺牲了部分性能。
 
这也启发我们,面对不同需求,通用的轮子不一定是最好的,我们完全可以学以致用,自主创新,开发更贴合实际需求的代码。比如对于需要大量且快速地遍历全部文件和文件夹时,我们完全可以选择自行编写运行效率更高的函数。
本期就到此结束啦,Demo已上传,感兴趣的同学可以看看,也期望各位大神能帮忙前来指教,进一步分享更多更有趣的程序。
分享开源免费,共同学习进步^_^ *附件:第61期_LabVIEW之递归文件及文件夹Demo.rar
|