遍历目录树 - Unicode 模式
- =info
- 遍历目录树 支持 Unicode
- Code by 523066680@163.com
- 2017-03
- V0.5 使用Win32API判断目录硬链接
- =cut
- use utf8;
- use Encode;
- use Win32API::File qw(GetFileAttributesW FILE_ATTRIBUTE_REPARSE_POINT);
- use Win32::Unicode;
- use IO::Handle;
- STDOUT->autoflush(1);
- binmode(STDOUT, ':encoding(gbk)');
- our $n_files = 0;
- our $n_dirs = 0;
- my $path = "D:/Extra";
- func($path, 0);
- print $n_files ,"\n";
- print $n_dirs;
- sub func
- {
- my ($path, $lv) = (shift, shift);
- my $wdir = Win32::Unicode::Dir->new;
- my $code;
- my $next_path;
- $wdir->open( $path );
- if ( $wdir->error() =~ /找不到/ )
- {
- print $wdir->error();
- exit;
- }
- while ( my $f = $wdir->read() )
- {
- if ( file_type('f', $path. "/" .$f ) )
- {
- print " "x$lv . "$f\n";
- $n_files++;
- }
- next if ($f eq ".");
- next if ($f eq "..");
- $next_path = $path. "/" .$f;
- if ( file_type('d', $next_path ) )
- {
- $n_dirs++;
- print " "x$lv . "$f\n";
- $code = GetFileAttributesW( encode('utf16-le', $next_path) ."\x00\x00" );
- if ( isLink( $code ) ) { print "skip symbolic link: $f\n"; }
- else { func( $next_path, $lv+1 ); }
- }
- }
- }
- sub isLink
- {
- return ($_[0] & FILE_ATTRIBUTE_REPARSE_POINT) == FILE_ATTRIBUTE_REPARSE_POINT ?
- 1 : 0;
- }
遍历目录树 - Unicode 模式的更多相关文章
- 可编译为 UNICODE 和 ANSI 版本的遍历目录树程序_0.1
路径暂时是写死的 编译两个版本的程序: g++ treeT.cpp -municode -D_UNICODE -o treeT_UNIg++ treeT.cpp -o treeT_ASC 为了观察 ...
- python 之遍历目录树(可匹配输出特定后缀的文件)
涉及到的模块有os, fnmatch:1.通过os模块中的方法获取dir.subdir.files,通过os.path.join可拼接成完整路径: 2.fnmatch主要通过fnmatch.fnmat ...
- 利用树的先序和后序遍历打印 os 中的目录树
[0]README 0.1)本代码均为原创,旨在将树的遍历应用一下下以加深印象而已:(回答了学习树的遍历到底有什么用的问题?)你对比下linux 中的文件树 和我的打印结果就明理了: 0.2)我们采用 ...
- python遍历目录os.walk(''d:\\test2",topdown=False)
os.walk(top, topdown=True, onerror=None, followlinks=False)遍历目录,topdown=false表示先返回目录,后返回文件 参数说明: top ...
- python GUI编程tkinter示例之目录树遍历工具
摘录 python核心编程 本节我们将展示一个中级的tkinter应用实例,这个应用是一个目录树遍历工具:它会从当前目录开始,提供一个文件列表,双击列表中任意的其他目录,就会使得工具切换到新目录中,用 ...
- WPF 目录树绑定 与 遍历
定义树节点,(编译环境VS2017) public class GBTreeNode : INotifyPropertyChanged { private string _deviceId = str ...
- node.js整理 03文件操作-遍历目录和文本编码
遍历目录 递归算法 遍历目录时一般使用递归算法,否则就难以编写出简洁的代码. 递归算法与数学归纳法类似,通过不断缩小问题的规模来解决问题 function factorial(n) { if (n = ...
- SSIS 遍历目录,把文件内容导入数据库
最近接手一个项目,程序的基本框架是:程序A导出数据,以.tsv格式存储,数据列之间以tab间隔:程序B吃文档,把数据导入到数据库中,并把处理过的文档备份/移动到指定的目录中.为了快速开发,程序B设计成 ...
- 05.表达式目录树Expression
参考文章 https://www.cnblogs.com/xyh9039/p/12748983.html 1. 基本了解 1.1 Lambda表达式 演变过程 using System; namesp ...
随机推荐
- Q205 同构字符串
给定两个字符串 s 和 t,判断它们是否是同构的. 如果 s 中的字符可以被替换得到 t ,那么这两个字符串是同构的. 所有出现的字符都必须用另一个字符替换,同时保留字符的顺序.两个字符不能映射到同一 ...
- VUE-CLI 设置页面title
router > index.js { path: '/worklist', name: 'worklist', component: worklist, meta: {title:'维修工列表 ...
- pandas to_excel、to_csv的float_format参数设置
df.to_excel(outpath,float_format='%.2f')
- lxc 容器基础配置篇
一, 首先配置lxc需要的网卡断 吧eth0复制一份变为br0 配置br0 配置eth0 重启网卡 /etc/init.d/network restart 安装lxc软件 需要epel源--- y ...
- Beam编程系列之Python SDK Quickstart(官网的推荐步骤)
不多说,直接上干货! https://beam.apache.org/get-started/quickstart-py/ Beam编程系列之Java SDK Quickstart(官网的推荐步骤)
- Coursera 机器学习 第8章(上) Unsupervised Learning 学习笔记
8 Unsupervised Learning8.1 Clustering8.1.1 Unsupervised Learning: Introduction集群(聚类)的概念.什么是无监督学习:对于无 ...
- 使用 GitHub API 进行数据分析 (Node.js)
使用 GitHub API 进行数据分析 (Node.js) Node.js 的访问 GitHub 的 API 库,通过 npm 或者 yarn 安装: yarn add github-api 官方示 ...
- 常用shell脚本(持续更新中)
1. 写一个shell脚本来得到当前的日期,时间,用户名和当前工作目录. 答案 : 输出用户名,当前日期和时间,以及当前工作目录的命令就是logname,date,who i am和pwd. #!/b ...
- [转]Show parameter & Table Not exists
本文转自:http://www.cnblogs.com/fangwenyu/archive/2011/01/06/1926774.html 问题描述 在尝试通过show parameter来查看一个参 ...
- flask-SQLAlchemy的ORM
1.创建表 import datetime from sqlalchemy import create_engine from sqlalchemy.ext.declarative import de ...