如何确定传递路径的最后部分是文件,目录还是掩码?

时间:2015-06-25 10:38:45

标签: c++ linux

我正在尝试制作一些Linux C ++代码来复制和列出来自某些任意路径的文件,独立于协议(ftp,ssh,mtp,local,smb等),所以我想知道什么是最好的方法检查指定的路径是否是一个简单的文件夹路径(所以我列出了那里的所有内容),一个以文件结尾的路径(所以我只列出那个文件),或者一个掩码(如/path1/path2/*.xxx)。

前两个是由我的代码透明处理的,但第三个是躲过我......

现在,我有这样的事情:

Entry newEntry ( path );
if newEntry.IsDirectory ()
    {
    newEntry.ListContentsIntoArray(Array);
    foreach Entry in Array
        DisplayInfo ( Entry );
    }
else
    DisplayInfo ( newEntry );

但是如果它以通配符掩码结束我不知道怎么做... 有什么想法吗?

1 个答案:

答案 0 :(得分:0)

Posix有一个用于通配符扩展的API:glob()

C.f。

man 3p glob

(如果您的系统上安装了posix联机帮助页。)

请注意,您也可以将普通目录和常规文件名传递给glob()。 这可能会简化您的代码。 如果glob()是一个目录(标记:/),您也可以要求GLOB_MARK向每个展开的条目附加$(function() { $( "#resizable" ).resizable(); old_width = $( "#resizable" ).width(); old_height = $( "#resizable" ).height(); $( "#resizable" ).resize(function(){ current_widht = $( "#resizable" ).width(); current_height = $( "#resizable" ).height(); // this shoud the de index for font decrease or increase r = (current_widht/old_width) * (current_height/old_height); if( r >= 1) { r = r*2; // you can change this $( "#resizable" ).css('font-size', 11 + r); } else { r = r*2; $( "#resizable" ).css('font-size', 11 - r); } }); });