C++遍历文件夹下所有的wav文件(支持windows和Linux)

举报
墨理学AI 发表于 2022/01/13 23:16:02 2022/01/13
【摘要】 参考文章 直接上代码(这个方法使用Visual Studio 2017 进行调试的话,会报 “找不到 #include <dirent.h>” 的错误,尚未解决,还希望大佬赐教): windo...

参考文章
直接上代码(这个方法使用Visual Studio 2017 进行调试的话,会报 “找不到 #include <dirent.h>” 的错误,尚未解决,还希望大佬赐教):
windows 下的 Dev-C++ 以及 Linux 环境下 是可以正确运行的

#include <iostream> 
#include <string> 
#include <vector> 
#include <fstream> 
#include <string.h>
#include <dirent.h>
	
using namespace std;

//  Find all files  ext is  wav
void getFileNames(string path,vector<string>& filenames)
{
    DIR *pDir;
    struct dirent* ptr;
	
    if(!(pDir = opendir(path.c_str()))){
        cout<<"Folder doesn't Exist!"<<endl;
        return;
    }
    while((ptr = readdir(pDir))!=0) {
    	if(0 == strcmp(strchr(ptr->d_name, '.'), ".wav")){
    		 filenames.push_back(path + "/" + ptr->d_name);
    	}

    }
    closedir(pDir);
} 
void fileTest(){
	
	int i = 0;
	string path = "H:\\audio";

	vector<string> files;
	
	getFileNames(path, files);

	int file_numbers = files.size();


	for (i = 0; i < file_numbers; ++i) {
		char file_path[100];
		strcpy(file_path, files[i].c_str());
		
		//strcpy_s( file_path, files[i].c_str());
		
		printf("%-4d", i+1);
		cout<<"  "<< file_path <<endl;
	}
		
}

int main()
{	
	fileTest();	
} 

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55

Windows 下 的 C++遍历文件夹下所有的wav文件,Visual Studio 2017 可以调试,Linux下不支持

//头文件肯定用不到这么多的,我只是懒

#include <iostream>
#include <fstream>
#include <string.h>
#include <string>
#include<stdlib.h>
#include <io.h>
#include <bitset>
#include <iomanip>
#include <cmath>
#include <vector>
#include <algorithm>
#include <chrono>

int multipleFileWindows()
{
	int i = 0;
	int index = 0;

	string path = "H:\\noise";

	//Find all file whose ext is  .wav 
	string inPath = path  + "\\*.wav";

	long handle;
	struct _finddata_t fileinfo;

	handle = _findfirst(inPath.c_str(),&fileinfo);

	if(handle == -1)
		return -1;
	do
	{
		++index;
	} while (!_findnext(handle,&fileinfo));
// 存储文件路径到 files
	vector<string> files(index);
	handle = _findfirst(inPath.c_str(),&fileinfo);
	i = 0;
	string absolute_path = "";
	if(handle == -1)
		return -1;
	do
	{
		absolute_path = path + "\\" + fileinfo.name;
		files[i++] = absolute_path;

	} while (!_findnext(handle,&fileinfo));


	_findclose(handle);

	return 1;
}


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56

文章来源: positive.blog.csdn.net,作者:墨理学AI,版权归原作者所有,如需转载,请联系作者。

原文链接:positive.blog.csdn.net/article/details/84136839

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。