Скопируйте файл сертификата в другое место

0

У меня есть.crl файл, который я хочу скопировать в другое место. Из всех сообщений, которые я видел до сих пор, это невозможно сделать без копирования содержимого. Есть ли способ, в котором я могу передать файл в другое место в cpp без копирования содержимого?

Я пытался копировать содержимое, используя обычный метод fopen. Но данные не записывались в буфер. Если нет прямого метода, может ли кто-нибудь рассказать мне, как прочитать файл сертификата и записать содержимое в другой файл в другом месте?

Я также пробовал методы fstream

std::ofstream dest("destination.crl", std::ios::trunc|std::ios::binary);

if(!dest.good())     
{         std::cerr << "error opening output file\n";      
          //std::exit(2);    
}    
std::fstream src("sourcec.crl", std::ios::binary); 
if(!src.good())     
{         std::cerr << "error opening input file\n"; 
          //std::exit(1);    
}
dest << src.rdbuf();   
if(!src.eof())           std::cerr << "reading from file failed\n";     
if(!dest.good())         std::cerr << "writing to file failed\n"; 

Но он отображал ошибки: ошибка открытия входного файла чтения из файла не удалось записать в файл не удалось

заранее спасибо

  • 0
    Есть ли другой способ, кроме копирования контента? Почему символическая ссылка или ярлык файла не будут работать?
  • 2
    cp sourcec.crl destination.crl
Показать ещё 4 комментария
Теги:
openssl

2 ответа

0

Основываясь на вашем ответе, я пишу еще один ответ.

Для окна есть функция [CopyFile][1]. Вы можете использовать эту функцию, чтобы скопировать файл, не читая содержимое самостоятельно.

Для linux/unix я не могу найти прямой эквивалент CopyFile.

Я считаю, что этот вопрос может вам помочь.

0

Я нашел это здесь.

Понимаете, это может вам помочь. Поскольку вы не хотите читать, я думал, что вы не хотите выполнять операции чтения и записи самостоятельно.

#include <istream>
#include <iostream>
#include <fstream>
#include <iterator>


using namespace std;


int main()

{

        fstream f("source.crl", fstream::in|fstream::binary);
        f << noskipws;
        istream_iterator<unsigned char> begin(f);
        istream_iterator<unsigned char> end;

        fstream f2("destination.crl",
        fstream::out|fstream::trunc|fstream::binary);
        ostream_iterator<char> begin2(f2);

        copy(begin, end, begin2);
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню