|
求帮助:
用QT 写了一个文件过滤功能,虽然能够实现根据文件的扩展名来过滤大部分的普通文件,但是如果,文件名中含有特殊字符,却获取不到文件名了:
代码如下,我测试的特殊文件名称中主要含有以下字符:
Ⅳ々~「ⅠⅡⅢⅥⅤ|∷
total = scandir(dir,&namelist ,0,alphasort);
if( total < 0 )
{
perror(“scandir”);
return ;
}
else
{
for( j = 2; j < total; j++)
{
QString filename;
filename = namelist[j]->d_name;
memset( Absfilename, 0, sizeof( Absfilename ) );
sprintf( Absfilename, "%s/%s", dir, namelist[j]->d_name) ;
stat( Absfilename, &buf );
int FileType;
if ( S_ISREG( buf.st_mode ) == 1 )
{
FileType = filterFiles( filename );
if ( 1==FileType )
{
Boxlist[listnum++ ] = Absfilename ;
listBox1->insertItem(*pfilm, trUtf8( namelist[j]->d_name) );
}
}
文件过滤函数部分代码如下:,
static char *videopattern[] = { "*.AVI", "*.VOB", "*.RM", "*.RMVB"};
int videonum = sizeof(videopattern)/sizeof( char* );
int TopWindow::filterFiles( QString filename )
{
int i ;
for( i = 0 ; i < videonum; ++i )
{
if( fnmatch( videopattern, trUtf8( filename.upper() ), 0 ) == 0 )
{
return 1; //视频格式
}
}
}
不知道为什么特殊字符的却过滤不出来,如: 『憨豆先生』Ⅲ.rmvb 就不行...
希望有做过文件过滤的大侠指点下小弟.在此不胜感激..! |
|