做了一個原型你,其不安全的方式,沒有錯誤檢查,但它的工作原理。
代碼:
#include <sys/types.h>
#include <sys/stat.h>
#include <dirent.h>
#include <errno.h>
#include <vector>
#include <string>
#include <iostream>
int scan(std::string dir, std::vector<std::string> &files)
{
DIR* dr = opendir(dir.c_str());
struct dirent *drp;
while ((drp = readdir(dr)) != NULL)
{
struct stat s;
stat((dir + "/" + std::string(drp->d_name)).c_str(), &s);
if (s.st_mode & S_IFREG)
{
files.push_back(std::string(drp->d_name));
}
}
closedir(dr);
return 0;
}
int main()
{
std::string dir = ".", cmd = "vlc";
std::vector<std::string> files, vfiles;
scan(dir, files);
for (unsigned int i = 0; i < files.size(); i++)
{
if (files[i].substr(files[i].find(".")) == ".mp3")
{
vfiles.push_back(std::string(files[i]));
}
}
for (unsigned int i = 0; i < vfiles.size(); i++)
{
cmd += " " + dir + "/" + vfiles[i];
}
printf("%s\n", cmd.c_str());
system(cmd.c_str());
return 0;
}
輸出:
vlc ./test.mp3 ./test2.mp3
它所做的是:它會列出指定文件夾中的所有文件"."
默認情況下,它會檢查該文件實際上是一個是文件不是文件夾,它會列出所有以".mp3"
結尾的文件,然後運行vlc file1.mp3 file2.mp3 file4.mp3
。 VLC將按順序播放所有列出的文件。
在將Windows 8添加到Path
後使用(VLC media player 2.0.6 Twoflower
)。
[可能的重複](http://stackoverflow.com/questions/6143100/how-do-i-open-a-file-in-its-default-program-linux)。那麼,不完全相同,但可能是你的意思(如果他們不使用vlc呢?) – BoBTFish
@BoBTFish:Vlc在這種情況下是特定的 – Rishabh
[''g_app_info_launch'](https://developer.gnome.org/ GIO/2.32/GAppInfo.html#G-APP-信息推出)? – BoBTFish