Как запретить копировать определенный файл? C++
Написал такой код, суть в том что в файле Info.txt лежит три значения. Адрес куда нужно копировать, что нужно копировать и что не нужно копировать. С помощью библиотеки filesystem я копирую данные и выполняю первый пункт из Info, говоря куда нужно скопировать
setlocale(LC_ALL, "ru");
string path = "Info.txt";
int i = 0;
string info[3];
ifstream fin;
fin.open(path);
if (!fin.is_open())
{
cout << "Ошибка открытия файла" << endl;
}
else
{
cout<<"open" << endl;
string ch;
while (!fin.eof())
{
ch = "";
getline(fin,ch);
info[i] = ch;
cout << info[i] << endl;
i++;
}
}
fin.close();
fs::remove_all(L"C:\\Users\\apash\\Desktop\\diplom\\bd\\");
fs::path sourceFile;
sourceFile = (L"C:\\Users\\apash\\Desktop\\diplom\\prog\\");
fs::path targetParent;
targetParent = info[1];
fs::create_directories(targetParent);
fs::copy(sourceFile, targetParent);
Но я не могу придумать решение для оставшихся задач. Как запретить копировать файлы с именем например "pa.*"
Ответы (1 шт):
Автор решения: megorit
→ Ссылка
Чтобы скопировать файл, должны быть права на его чтение. Пользуясь этим знанием, убираем лишние права:
namespace fs = std::filesystem;
const fs::path path{"/path/to/the/file"};
// Equivalent to 'chmod 700 <file>'
fs::status(path).permissions(fs::perms::owner_all);
// Equivalent to 'chmod 000 <file>'
fs::status(path).permissions(fs::perms::none);
И ещё совет, используйте raw string literal:
RL"C:\path\to\the\file"
PS: Тогда попробуйте так:
fs::permissions(path,fs::perms::none,fs::perm_options::replace);