zoukankan      html  css  js  c++  java
  • 利用C/C++编写程序以获取文件夹内所有子文件名,以下程序参考网络上诸多博文:

    利用C/C++编写程序以获取文件夹内所有子文件名,以下程序参考网络上诸多博文:

    头文件如下:

    #include <iostream>
    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>
    #ifdef linux
    #include <unistd.h>
    #include <dirent.h>
    #endif
    #ifdef WIN32
    #include <direct.h>
    #include <io.h>
    #endif
    using namespace std;


    程序如下:

    <pre name="code" class="cpp">/**
     * @function: 获取cate_dir目录下的所有文件名
     * @param: cate_dir - string类型
     * @result:vector<string>类型
    */
    vector<string> getFiles(string cate_dir)
    {
    	vector<string> files;//存放文件名
    
    #ifdef WIN32
    	_finddata_t file;
    	long lf;
    	//输入文件夹路径
    	if ((lf=_findfirst(cate_dir.c_str(), &file)) == -1) {
    		cout<<cate_dir<<" not found!!!"<<endl;
    	} else {
    		while(_findnext(lf, &file) == 0) {
    			//输出文件名
    			//cout<<file.name<<endl;
    			if (strcmp(file.name, ".") == 0 || strcmp(file.name, "..") == 0)
    				continue;
    			files.push_back(file.name);
    		}
    	}
    	_findclose(lf);
    #endif
    
    #ifdef linux
    	DIR *dir;
    	struct dirent *ptr;
    	char base[1000];
     
    	if ((dir=opendir(cate_dir.c_str())) == NULL)
            {
    		perror("Open dir error...");
                    exit(1);
            }
     
    	while ((ptr=readdir(dir)) != NULL)
    	{
    		if(strcmp(ptr->d_name,".")==0 || strcmp(ptr->d_name,"..")==0)    ///current dir OR parrent dir
    		        continue;
    		else if(ptr->d_type == 8)    ///file
    			//printf("d_name:%s/%s
    ",basePath,ptr->d_name);
    			files.push_back(ptr->d_name);
    		else if(ptr->d_type == 10)    ///link file
    			//printf("d_name:%s/%s
    ",basePath,ptr->d_name);
    			continue;
    		else if(ptr->d_type == 4)    ///dir
    		{
    			files.push_back(ptr->d_name);
    			/*
    		        memset(base,'',sizeof(base));
    		        strcpy(base,basePath);
    		        strcat(base,"/");
    		        strcat(base,ptr->d_nSame);
    		        readFileList(base);
    			*/
    		}
    	}
    	closedir(dir);
    #endif
    
    	//排序,按从小到大排序
    	sort(files.begin(), files.end());
    	return files;
    }


    windows环境下需要加上cate_dir+"\*"


    实现:获取当前目录下的文件名:

    windows环境:

    推荐:Linux_shell脚本_遍历文件夹下所有文件

    #!/bin/bash function ergodic(){ for file in ` ls $1 ` do                 if [ -d $1"/"$file ] then ergodic $1"/"$file else local path=$1"/"$file  #得

    int main(void)
    {
    	char current_address[100];
    	memset(current_address, 0, 100);
    	getcwd(current_address, 100); //获取当前路径
    	cout<<current_address<<endl;
    	strcat(current_address, "\*");
    
    	vector<string> files=getFiles((string)current_address);
    	for (int i=0; i<files.size(); i++)
    	{
    		cout<<files[i]<<endl;
    	}
    
    	//cout<<"Hello World"<<endl;
    
    	cout<<"end..."<<endl;
    	cin.get();
    	return 0;
    }


    linux环境:

    int main(void)
    {
        DIR *dir;
        char basePath[100];
    
        ///get the current absoulte path
        memset(basePath, '', sizeof(basePath));
        getcwd(basePath, 999);
        printf("the current dir is : %s
    ",basePath);
    
    	 
        cout<<endl<<endl;
        vector<string> files=getFiles(basePath);
        for (int i=0; i<files.size(); i++)
        {
        	cout<<files[i]<<endl;
        }
    
    
        cout<<"end..."<<endl<<endl;
        return 0;
    }

    ###############################

    参考:

    http://blog.csdn.net/cscmaker/article/details/7042718

    http://baike.baidu.com/item/getcwd


    获取当前绝对路径getcwd():

    windows环境下头文件:

    #include <direct.h>


    linux环境下头文件:

    #include <unistd.h>


    推荐:java中获取指定文件夹下所有文件名

    public List getFileList(String path) {    List list = new ArrayList();    try {     File file = new File(path);     String[] filelist = file.list(); 

    参考: http://www.cnblogs.com/xudong-bupt/p/3504442.html ################################################# 利用C/C++编写程序以获取文件夹内所有子文件名,以下程序参考网络上诸多博文:
  • 相关阅读:
    Java对象克隆
    Java对象toString()方法
    Java对象相等比较(Equals)
    数据传送到后端(二)
    前端数据传送至后端(一)
    jquery导航栏(方法1)
    js导航栏
    纯css导航栏
    jquery导航栏(方法2)
    带尖角的边框(方法二)
  • 原文地址:https://www.cnblogs.com/zhoug2020/p/13526725.html
Copyright © 2011-2022 走看看