[求助]CH375 怎么搜索.MP3文件

if ( i == ERR_MISS_DIR ) pCodeStr = "\\*"; /* MP3子目录不存在则列出根目录下的文件 */ else pCodeStr = " \\MP3\\*"; /* 文件不存在则列出\MP3子目录下的文件 */ printf( "List file %s\n", pCodeStr ); for ( c = 0; c < 255; c ++ ) { /* 最多搜索前255个文件 */ strcpy( (char *)mCmdParam.Open.mPathName, (char *)pCodeStr ); /* 搜索文件名,*为通配符,适用于所有文件或者子目录 */ i = strlen( (char const *)mCmdParam.Open.mPathName ); /* 计算文件名长度,以处理文件名结束符 */ mCmdParam.Open.mPathName[ i ] = c; /* 根据字符串长度将结束符替换为搜索的序号,从0到255 */ i = CH375FileOpen( ); /* 打开文件,如果文件名中含有通配符*,则为搜索文件而不打开 */ if ( i == ERR_MISS_FILE ) break; /* 再也搜索不到匹配的文件,已经没有匹配的文件名 */ if ( i == ERR_FOUND_NAME ) { /* 搜索到与通配符相匹配的文件名,文件名及其完整路径在命令缓冲区中 */ printf( " match file %d#: %s\n", (unsigned int)c, mCmdParam.Open.mPathName ); /* 显示序号和搜索到的匹配文件名或者子目录名 */ continue; /* 继续搜索下一个匹配的文件名,下次搜索时序号会加1 */ }

上面是 列出MP3目录下的所有文件 我想列出MP3目录下的MP3文件

我用 pCodeStr = " \\MP3\\*.MP3" 不行 麻烦指教下

(1)"\\MP3\\*.MP3",这个是错误的,*后面不能再有字符,枚举文件的方法,下载CH375EVT.ZIP参考CH375HF.PDF中关于CH375FileEnumer的解释 (2)可以这么做: for ( int count=0; count<20000; count++ ) { /* 最多搜索前20000 个文件 */ strcpy( mCmdParam.Enumer.mPathName, "\\MP3\*" ); /* 在MP3目录下搜索所有文件名 */ i = strlen( mCmdParam.Enumer.mPathName ); /* 计算文件名长度,指向结束符 */ mCmdParam.Enumer.mPathName[i] = 0xFF; /* 将结束符替换为255 说明序号在变量中 */ CH375vFileSize = count; /* 指定搜索的序号,几乎没有上限 */ i=CH375FileEnumer( ); /* 文件名中含有通配符*,枚举/搜索文件而不打开 */ if ( i==ERR_MISS_FILE ) break; /* 再也搜索不到匹配文件,已经没有匹配的文件名 */ if ( i!=ERR_SUCCESS ) break; /* 出错 */ printf( "found name %d#: %s\n", count, mCmdParam.Enumer.mPathName ); /* 搜索到相匹配的文件名,显示序号和搜索到的匹配文件名或者子目录名 */ if ( CH375vFileSize!=0xFFFFFFFF ) printf( "this is a file\n" ) /* 枚举到文件 */ { 在此处分析文件名的后缀名是否为MP3,从而找到MP3文件 } else printf( "this is a directory\n" ); /* 枚举到子目录 */ }


在分析后缀名为MP3的时候需要注意一个问题就是:你首先需要找到一个文件的后缀的位置即“.”在搜索完"MP3"之后,还需要去找下在这个之后还有一个0X00数据,这样才算找到一个真正的MP3文件.


还需要去找下在这个之后还有一个0X00数据,这样才算找到一个真正的MP3文件. 这个什么意思啊? 我现在是二楼那方法


我的意思是在你找MP3文件的时候按照我上面的说法来做,假如前面一个文件为“123.MP3”而后面一个文件名为“12”,假如你判断0X00的话,在读取第2个文件的时候,文件名缓冲区的数据为“0x31,0x32,0x00,0x2e,0x4d,0x50,0x33”,如果不判断0X00而只找0X2E的话,就会把12这个文件做为MP3文件。


只有登录才能回复,可以选择微信账号登录