-
2009-12-20
m3u播放列表生成器 - part 2 - [Tips]
下面是递归遍历目录函数。
bool scandir(QString dirpath, bool isfullpath, QTextStream& qout)
{
//获取这个目录的句柄
QDir dir(dirpath);
//如果目录不存在 返回
if (!dir.exists())
return false;
qout << dirpath << endl;
//获取当前目录下所有的*.mp3文件名列表
QStringList filelist = dir.entryList(QStringList("*.mp3"), QDir::Files | QDir::NoDotAndDotDot);
//如果没有*.mp3文件则不创建文件 否则创建文件
if (!filelist.empty())
{
//在当前目录中创建于目录名相同的*.m3u文件
//如果已经存在 则备份
if (QFile::exists(dirpath + "/" + dir.dirName() + ".m3u"))
QFile::rename(dirpath + "/" + dir.dirName() + ".m3u", dirpath + "/" + dir.dirName() + ".m3u" + ".bak");
QFile m3ufile(dirpath + "/" + dir.dirName() + ".m3u");
if (m3ufile.open(QIODevice::ReadWrite | QIODevice::Text))
{
qout << "creating a m3u file..." << endl;
QTextStream outfile(&m3ufile);
outfile << "#EXTM3U" << endl; //写文件头
//写歌曲列表
for (int i = 0; i != filelist.size(); ++i)
{
outfile << ((isfullpath) ? (dirpath + "/" + filelist[i]) : filelist[i] ) << endl;
qout << ((isfullpath) ? (dirpath + "/" + filelist[i]) : filelist[i] ) << endl;
}
}
}
//获取当前目录下的所有目录名列表
QStringList dirlist = dir.entryList(QDir::Dirs | QDir::NoDotAndDotDot);
for (int i = 0; i != dirlist.size(); ++i)
scandir(dirpath + "/" + dirlist[i], isfullpath, qout); //对每个目录递归调用此函数
return true;
}ps:
- 大巴的文章长度限制太烦了。发点代码的文章都要分很多分。虽然有一个csdn的blog,但是我一直不想把blog搬到太专业的地方去。我觉得,或许业余的才是最快乐的,太专业给人压迫感。
- 如果这个程序你觉得需要,可以email: camel.young@gmail.com







