Как запретить копировать определенный файл? C++

Рейтинг: 1Ответов: 1Опубликовано: 03.05.2023

Написал такой код, суть в том что в файле 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

Чтобы скопировать файл, должны быть права на его чтение. Пользуясь этим знанием, убираем лишние права:

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);