-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathziprw.cpp
90 lines (77 loc) · 2.2 KB
/
ziprw.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#include <QFile>
#include <QDir>
#include "ziprw.h"
#include "quazip.h"
#include "quazipfile.h"
ZipRW::ZipRW(QObject *parent) :
QObject(parent)
{
}
QString ZipRW::FileText(QString ZipFile, QString File)
{
QuaZip qz(ZipFile);
qz.open(QuaZip::mdUnzip);
qz.setCurrentFile(File, QuaZip::csInsensitive);
QuaZipFile qf(&qz);
qf.open(QFile::ReadOnly);
QString txt = qf.readAll();
qf.close();
qz.close();
return txt;
}
void ZipRW::SetFileText(QString ZipFile, QString File, QString Text)
{
QFile(ZipFile).rename(ZipFile + ".old");
QuaZip qz2(ZipFile);
qz2.open(QuaZip::mdCreate);
QuaZipFile qzf(&qz2);
qzf.open(QFile::WriteOnly, QuaZipNewInfo(File));
qzf.write(Text.toLatin1());
qzf.close();
QuaZip qz(ZipFile + ".old");
qz.open(QuaZip::mdUnzip);
QList<QuaZipFileInfo> lst = qz.getFileInfoList();
foreach (QuaZipFileInfo itm, lst) {
if (itm.name != File) {
qz.setCurrentFile(itm.name, QuaZip::csInsensitive);
QuaZipFile qf(&qz);
qf.open(QFile::ReadOnly);
QByteArray ba = qf.readAll();
qf.close();
QuaZipFile qzf2(&qz2);
qzf2.open(QFile::WriteOnly, QuaZipNewInfo(itm.name));
qzf2.write(ba);
qzf2.close();
}
}
qz.close();
qz2.close();
QFile(ZipFile + ".old").remove();
}
void ZipRW::CpFileText(QString source, QString dest, QString File, QString Text)
{
QuaZip qz2(dest);
qz2.open(QuaZip::mdCreate);
QuaZipFile qzf(&qz2);
qzf.open(QFile::WriteOnly, QuaZipNewInfo(File));
qzf.write(Text.toUtf8().data());
qzf.close();
QuaZip qz(source);
qz.open(QuaZip::mdUnzip);
QList<QuaZipFileInfo> lst = qz.getFileInfoList();
foreach (QuaZipFileInfo itm, lst) {
if (itm.name != File) {
qz.setCurrentFile(itm.name, QuaZip::csInsensitive);
QuaZipFile qf(&qz);
qf.open(QFile::ReadOnly);
QByteArray ba = qf.readAll();
qf.close();
QuaZipFile qzf2(&qz2);
qzf2.open(QFile::WriteOnly, QuaZipNewInfo(itm.name));
qzf2.write(ba);
qzf2.close();
}
}
qz.close();
qz2.close();
}