如何从C或C++代码中确定目录中的文件列表?
我不允许执行ls
命令并从我的程序中解析结果.
我可以显示如下目录列表:
use std::fs;
fn main() {
let paths = fs::read_dir("./").unwrap();
for path in paths {
println!("Name: {}", path.unwrap().path().display())
}
}
Run Code Online (Sandbox Code Playgroud)
我可以在ReadDir
迭代之前对迭代器进行排序吗?目录名称是类似日期的数字201610131503
.我阅读了文档,ReadDir
但是没有找到内置函数.也许我不知道如何搜索?
我有一点问题.我正在从目录中读取文件并且它可以工作,但它在开始时读取了两个额外的文件......它是什么?例如,有一个文件列表:"A348", "A348A", "A348B"
这是我得到的:".", "..", "A348", "A348A", "A348B"
???
DIR *dir;
struct dirent *dp;
char * file_name;
while ((dp=readdir(dir)) != NULL) {
file_name = dp->d_name;
}
Run Code Online (Sandbox Code Playgroud) 我在Windows中运行Perl,我使用readdir获取目录中所有文件的列表,并将结果存储在数组中.数组中的前两个元素似乎总是"." 和"......".这个订单是否有保证(假设操作系统没有改变)?
我想执行以下操作来删除这些值:
my $directory = 'C:\\foo\\bar';
opendir my $directory_handle, $directory
or die "Could not open '$directory' for reading: $!\n";
my @files = readdir $directory_handle;
splice ( @files, 0, 2 ); # Remove the "." and ".." elements from the array
Run Code Online (Sandbox Code Playgroud)
但我担心这样做可能不安全.我见过的所有解决方案都使用了数组中每个元素的正则表达式或if语句,如果我不需要,我宁愿不使用这些方法.思考?