bool addNewFile(string fileName, string address, string owner) { if (isSaved(fileName)) throw accessError(SAVED); if (!isExisting(address)) throw accessError(NO_FILE); string fileDirectory = getFilePath(fileName); ifstream fileToCopy(address); char c; if (mkdir(fileDirectory.c_str())) throw accessError(ERR_CR_DIR); //error creating directory ofstream fileToCreate(fileDirectory + '\\' + fileName); while (true) { c = fileToCopy.get(); if (!fileToCopy.eof()) fileToCreate.put(c); else break; } fileToCopy.close(); fileToCreate.close(); createPermFile(fileName, owner); createDiffFile(fileName); return true; }
void addFile(string fileName, string address) { string fileDirectory = getFilePath(fileName); ifstream fileToCopy(address); ofstream fileToCreate(fileDirectory + '\\' + fileName); char c; while (true) { c = fileToCopy.get(); if (!fileToCopy.eof()) fileToCreate.put(c); else break; } fileToCopy.close(); fileToCreate.close(); }
void CopyTask::copyFile( const QString& file, const QString& dest ) { if( file == dest ) return; qDebug()<<"Copy file from: "<<file<<" dest: "<<dest; QFileInfo inf( dest ); if( inf.exists() ) { if( yesToAll ) { QFile::remove( dest ); } else { copyOverwriteMutex.lock(); emit askOverwrite( dest ); copyOverwriteAnswered.wait( ©OverwriteMutex ); int ret = copyOverwriteAnswer; copyOverwriteMutex.unlock(); if( ret == QMessageBox::No ) { return; } else if( ret == QMessageBox::Yes ) { QFile::remove( dest ); } else if( ret == QMessageBox::YesToAll ) { QFile::remove( dest ); yesToAll = true; } } } QFile fileToCopy( file ); if( !fileToCopy.copy( dest ) ) { qDebug()<<"File copy failed."; } }
void Builder::run() { VLM_LatestError = BUILDER_NO_ERROR; //InterfaceArchiver * archives =new InterfaceArchiver(); QString MCL_CurrentFilePath = ""; int count; QFile VXL_UpdateListFile(VCM_OutputFilePath); QFileInfo VXL_UpdateListFileInfo; QDir VXL_UpdateListDir; //On vérirife l'existence du dossier VXL_UpdateListFileInfo.setFile(VXL_UpdateListFile); VXL_UpdateListDir = VXL_UpdateListFileInfo.absoluteDir(); if(!VXL_UpdateListDir.exists()) { VXL_UpdateListDir.mkpath(VXL_UpdateListFileInfo.absolutePath()); } else { //On vérifie la présence du fichier if(VXL_UpdateListFile.exists()) { //On le supprime VXL_UpdateListFile.remove(); } } //On ouvre le fichier if (!VXL_UpdateListFile.open(QIODevice::WriteOnly | QIODevice::Text)) { emit NotifyErrorMsg("Unable to open UpdateList File"); VLM_LatestError = BUILDER_ERROR_CANT_OPEN_FILE; return; } //On créé le buffer pour insèrer du texte QTextStream VXL_OutTextStream(&VXL_UpdateListFile); count = OMM_ListFilesToTreate.size(); VXL_OutTextStream << "[files]" <<"\n" << "fcount=" << count << "\n"; for(int i=0; i<OMM_ListFilesToTreate.size();i++) { MCL_CurrentFilePath = OMM_ListFilesToTreate[i]->getPath() + "/" + OMM_ListFilesToTreate[i]->getFilename().section('/', -1); qDebug() << MCL_CurrentFilePath; //On calcul le hash du fichier OMM_ListFilesToTreate[i]->setSha1(CalcSha1(MCL_CurrentFilePath)); //Si demandé, on affiche le fichier en cours de traitement #ifdef ENABLE_DEBUG_SHOWLISTS #ifdef QT_DEBUG qDebug() << "File :" << i+1 << "/" <<OMM_ListFilesToTreate.size() << OMM_ListFilesToTreate[i]->getFilename() << "|" << OMM_ListFilesToTreate[i]->getpriority() << "|" << OMM_ListFilesToTreate[i]->getPath() << "|" << OMM_ListFilesToTreate[i]->getSha1() ; #endif //QT_DEBUG #endif //ENABLE_DEBUG_SHOWLISTS //On écris la ligne qui le concerne if(QString::compare(MCL_CurrentFilePath, VCM_ReferenceFilePath) == 0) {//Fichier de référence } else {//Fichier "normal" count++; VXL_OutTextStream << "F"<<i<<"=" << OMM_ListFilesToTreate[i]->getFilename() << "|" << OMM_ListFilesToTreate[i]->getSha1() << "|" << OMM_ListFilesToTreate[i]->getpriority() << "\n"; } /***********TODO****************/ QString fileToCopy(OMM_ListFilesToTreate[i]->getPath() + "/" + OMM_ListFilesToTreate[i]->getFilename().section('/', -1)); QString subPath(OMM_ListFilesToTreate[i]->getFilename().section('/', 0, -2)); VXL_UpdateListDir.mkpath(subPath); QFile::copy(fileToCopy, VCM_ReferenceFilePath+OMM_ListFilesToTreate[i]->getFilename()); // QFile::copy(OMM_ListFilesToTreate[i]->getFilename(),OMM_ListFilesToTreate[i]->getFilename()); // On Maj la ProgressBar emit NotifyProgress(i+1,OMM_ListFilesToTreate.size()); } return; }