C++读取文件夹内所有文件路径和文件读写

C++读取文件夹内所有文件路径和文件读写

今天想用vs2015实现一个对文件夹内所有文件进行写入数据进而改变哈希值,在博客上找了一些大神的代码,又进行了一下修改得以完成这个功能

代码块

#include "stdafx.h"
#include <stdio.h>
#include<iostream>
#include<vector>
#include <Windows.h>
#include <fstream>  
#include <iterator>
#include <string>
#include <map>
using namespace std;
ofstream outfile;

void  GetFiles(string path, vector<string> &filesPath, vector<string>& filesName)
{
    WIN32_FIND_DATAA ffd;
    memset(&ffd, 0, sizeof(ffd));
    string pathOld= path;
    path.append("\\*");
    HANDLE hFind = FindFirstFileA(path.c_str(), &ffd);
    do {
        if (ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
        {
            if (!strcmp(ffd.cFileName, ".") || !strcmp(ffd.cFileName, ".."))
                continue;
            string newPath = pathOld;
            newPath.append("\\").append(ffd.cFileName);
            GetFiles(newPath, filesPath, filesName);
        }
        else
        {       
            string filePath = pathOld;
            filePath.append("\\").append(ffd.cFileName);
            filesName.push_back(ffd.cFileName);
            filesPath.push_back(filePath);
        }
    } while (FindNextFileA(hFind, &ffd) != 0);
    FindClose(hFind);
}

void writeLog(string filePath,string text)
{
    ifstream fin(filePath);
    if (!fin)
    {
        cout << "文件不存在";
        fin.close();
        return;
    }
    outfile.open(filePath, ios::app);
    if (!outfile) //检查文件是否正常打开//不是用于检查文件是否存在
    {
        cout << "abc.txt can't open" << endl;
        abort(); //打开失败,结束程序
    }
    else
    {
        outfile << text;
        outfile.close();
    }
}

int main()
{
    std::vector<std::string> filePath;
    std::vector<std::string> fileName;
    GetFiles("C:\\Users\\MyFile", filePath, fileName);
    for (int i = 0; i < filePath.size(); i++)
    {
        cout << filePath[i] << endl;        
    }
    for (int i = 0; i < fileName.size(); i++)
    {
        cout << fileName[i] << endl;
    }
    string text="写入内容";
    for (int i = 0; i < filePath.size(); i++)
    {
        writeLog(filePath[i], text);        
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_40048458/article/details/82624586