View Full Version : [C++] Linux Copia File
tomminno
26-02-2008, 16:47
Esiste un supporto da parte del sistema alla copia dei file tipo il CopyFile di Windows?
Non ho trovato niente.
Avendo la necessità di spostare/copiare file di qualche centinaio di MB mi chiedevo se ci fosse qualche metodo più indicato rispetto alla copia degli stream buffer fatta così:
std::ifstream ifs("input.txt", std::ios::binary);
std::ofstream ofs("output.txt", std::ios::binary);
ofs << ifs.rdbuf();
kernel::panic
27-02-2008, 21:13
Puoi provare se questo metodo è più veloce
#include <fstream>
#define BUFFER_SIZE 256
int main(int argc, char **argv)
{
std::ifstream in(argv[1], std::ios_base::binary);
std::ofstream out(argv[2], std::ios_base::binary);
char buffer[BUFFER_SIZE];
while(!in.eof())
{
in.read(buffer, BUFFER_SIZE);
out.write(buffer, in.gcount());
}
return 0;
}
Ciao
tomminno
28-02-2008, 08:40
Grazie, ma no non è più veloce.
Volevo sapere se esiste qualche api del sistema operativo per la copia dei file.
Ma sembrerebbe proprio di no.
ostringstream oss;
oss << "cp " << argv[1] << " " << argv[2];
system(oss.str());
:stordita:
tomminno
28-02-2008, 09:51
:D
Speravo in qualcosa controllabile da codice.
ilsensine
28-02-2008, 10:53
Volevo sapere se esiste qualche api del sistema operativo per la copia dei file.
No perché non è necessaria, non aggiunge alcuna funzionalità utile in più.
Avrebbero potuto fare una API nelle libc, ma non sarebbe stata molto diversa delle due righe che puoi scrivere a mano.
La velocità del codice influisce poco, la copia di un file - specie se grosso - è un processo sostanzialmente i/o bound.
tomminno
28-02-2008, 11:15
No perché non è necessaria, non aggiunge alcuna funzionalità utile in più.
Avrebbero potuto fare una API nelle libc, ma non sarebbe stata molto diversa delle due righe che puoi scrivere a mano.
La velocità del codice influisce poco, la copia di un file - specie se grosso - è un processo sostanzialmente i/o bound.
Infatti non mi interessa la velocità del codice, mi interessa che sia ottimizzato il processo sottostante di copia e possibilmente avere un controllo diretto da codice, cosa che con una chiamata system non ho.
In caso di file particolarmente grossi ci sono alternative a cp?
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.