Hallo zusammen,
ich such eine Möglichkeit ein ganzes directory in ein Zip zu speichern.
Sprich auch unterverzeichnise in einem angegeben Verzeichnis.
in der Sufu habe ich leider nur die Möglichkeit gefunden - files eines directorys in ein Zip zu packen, leider nicht die unterverzeichnisse.
Danke wiedermal!
lg
Aenni
quazip c++ ordner/directory zippen
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
das verstehe ich nicht ganzChristian81 hat geschrieben:Im Dateinamen können natürlich auch Pfade stehen.
wenn ich ein "directory" angebe, welches er archivieren soll, packt er alle dateien die in diesem verzeichnis sind, nur leider nicht die Ordner (welche sich auch im verzeichnis befinden).
Code: Alles auswählen
const QString cartella = QDir::currentPath();
char c;
QString zipfile;
QString ultimacartellaaperta = dirtozip.left(dirtozip.lastIndexOf("/"))+"/";
QDir dir(ultimacartellaaperta);
QString dirname = dir.dirName();
zipfile = dirname.append(".zip");
if (dir.exists())
{
QuaZip zip(zipfile);
if(!zip.open(QuaZip::mdCreate)) {
qWarning("testCreate(): zip.open(): %d", zip.getZipError());
return false;
}
QFile inFile;
QuaZipFile outFile(&zip);
const QFileInfoList list = dir.entryInfoList();
QFileInfo fi;
for (int l = 0; l < list.size(); l++)
{
fi = list.at(l);
if (fi.isDir() && fi.fileName() != "." && fi.fileName() != "..") {
/* dir */
} else if (fi.isFile() and fi.fileName() != zipfile ) {
QDir::setCurrent(dir.absolutePath());
inFile.setFileName(fi.fileName());
if(!inFile.open(QIODevice::ReadOnly)) {
qWarning("testCreate(): inFile.open(): %s", inFile.errorString().toLocal8Bit().constData());
return false;
}
if(!outFile.open(QIODevice::WriteOnly, QuaZipNewInfo(inFile.fileName(), inFile.fileName()))) {
qWarning("testCreate(): outFile.open(): %d", outFile.getZipError());
return false;
}
while(inFile.getChar(&c)&&outFile.putChar(c));
if(outFile.getZipError()!=UNZ_OK) {
qWarning("testCreate(): outFile.putChar(): %d", outFile.getZipError());
return false;
}
outFile.close();
if(outFile.getZipError()!=UNZ_OK) {
qWarning("testCreate(): outFile.close(): %d", outFile.getZipError());
return false;
}
inFile.close();
}
}
zip.close();
if(zip.getZipError()!=0) {
qWarning("testCreate(): zip.close(): %d", zip.getZipError());
QDir::setCurrent(cartella);
return false;
}
QDir::setCurrent(cartella);
return true;
}
Grüsse
Aenni
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Leider haben meine Versuche mit einer Übergabe von pfaden nicht funktioniert
.
Für ne gute idee wäre ich dankbar 
Code: Alles auswählen
//...
if(!outFile.open(QIODevice::WriteOnly, QuaZipNewInfo(inFile.fileName(), [b]fi.path()[/b]))) {
//...