MCPcopy Create free account
hub / github.com/altairwei/WizNotePlus / extractFile

Method extractFile

src/share/WizZip.cpp:221–290  ·  view source on GitHub ↗

OK * Estrae il file fileName, contenuto nell'oggetto zip, con il nome fileDest. * Se la funzione fallisce restituisce false e cancella il file che si e tentato di estrarre. * * La funzione fallisce se: * * zip==NULL; * * l'oggetto zip e stato aperto in una modalita non compatibile con l'estrazione di file; * * non e possibile aprire il file all'interno dell'oggetto zip; * * non e p

Source from the content-addressed store, hash-verified

219 * (1): prima di uscire dalla funzione cancella il file estratto.
220 */
221bool JlCompress::extractFile(QuaZip* zip, QString fileName, QString fileDest) {
222 // zip: oggetto dove aggiungere il file
223 // filename: nome del file reale
224 // fileincompress: nome del file all'interno del file compresso
225
226 // Controllo l'apertura dello zip
227 if (!zip) return false;
228 if (zip->getMode()!=QuaZip::mdUnzip) return false;
229
230 // Apro il file compresso
231 zip->setCurrentFile(fileName);
232 QuaZipFile inFile(zip);
233 if(!inFile.open(QIODevice::ReadOnly) || inFile.getZipError()!=UNZ_OK) return false;
234 //
235 int uncompressedSize = inFile.usize();
236
237 // Controllo esistenza cartella file risultato
238 QDir().mkpath(QFileInfo(fileDest).absolutePath());
239
240 // Apro il file risultato
241 if (QFile::exists(fileDest))
242 {
243 qDebug() << "delete exists file.";
244 QFile::remove(fileDest);
245 }
246 QSaveFile outFile;
247 outFile.setFileName(fileDest);
248 if(!outFile.open(QIODevice::WriteOnly | QIODevice::Truncate)) {
249
250 outFile.setPermissions(QFile::ReadOwner
251 | QFile::WriteOwner
252 | QFile::ReadUser
253 | QFile::WriteUser
254 | QFile::ReadGroup
255 | QFile::ReadOther
256 );
257 //
258 if (!outFile.open(QIODevice::WriteOnly | QIODevice::Truncate))
259 return false;
260 }
261
262 // Copio i dati
263 if (!copyData(inFile, outFile) || inFile.getZipError()!=UNZ_OK) {
264 removeFile(QStringList(fileDest));
265 return false;
266 }
267
268 // Chiudo i file
269 inFile.close();
270 if (inFile.getZipError()!=UNZ_OK) {
271 removeFile(QStringList(fileDest));
272 return false;
273 }
274 if (!outFile.commit())
275 {
276 qDebug() << "failed to save zip file: " << fileDest;
277 return false;
278 }

Callers 3

document_postDataNewMethod · 0.80

Calls 8

QFileInfoClass · 0.85
copyDataFunction · 0.85
setFileNameMethod · 0.80
isEmptyMethod · 0.80
QStringClass · 0.70
QStringListClass · 0.50
openMethod · 0.45
closeMethod · 0.45

Tested by

no test coverage detected