我想用QuaZip在zipcarchive中的文本文件中编写一个QString。我在WinXP上使用Qt Creator。使用我的代码,归档中的文本文件是创建的,但为空。
QDomDocument doc;
/* doc is filled with some XML-data */
zipfile = new QuaZip("test.zip");
zipfile->open(QuaZip::mdCreate);
QuaZipFile file(zipfile);
file.open(QIODevice::WriteOnly, QuaZipNewInfo("foo.xml"));
QTextStream ts ( &file );
ts << doc.toString();
file.close();
zipfile.close();
当我尝试使用QFile时,它会按预期工作:
QDomDocument doc;
/* doc is filled with some XML-data */
QFile file("test.xml");
file.open(QIODevice::WriteOnly);
QTextStream ts ( &file );
ts << doc.toString();
file.close();
我在test.xml中找到了正确的内容,所以String就在那里,但不知何故,QTextStream不想使用QuaZipFile。
当我使用QDataStream而不是QTextStream时,会有一个输出,但不是正确的输出。QDomDocument文档;/*文档中填充了一些XML数据*/
zipfile = new QuaZip("test.zip");
zipfile->open(QuaZip::mdCreate);
QuaZipFile file(zipfile);
file.open(QIODevice::WriteOnly, QuaZipNewInfo("foo.xml"));
QDataStream ts ( &file );
ts << doc.toString();
file.close();
zipfile.close();
test.zip中的foo.xml中填充了一些数据,但格式错误(每个字符之间都有一个额外的"nul"字符)。
如何在zip档案中的文本文件中写入字符串?
谢谢,Paul
将QDomDocument写入ZIP文件不需要QTextStream或QDataStream。
您可以简单地执行以下操作:
QDomDocument doc;
/* doc is filled with some XML-data */
zipfile = new QuaZip("test.zip");
zipfile->open(QuaZip::mdCreate);
QuaZipFile file(zipfile);
file.open(QIODevice::WriteOnly, QuaZipNewInfo("foo.xml"));
// After .toString(), you should specify a text codec to use to encode the
// string data into the (binary) file. Here, I use UTF-8:
file.write(doc.toString().toUtf8());
file.close();
zipfile->close();
在最初的第一个示例中,您必须刷新流:
QDomDocument doc;
/* doc is filled with some XML-data */
zipfile = new QuaZip("test.zip");
zipfile->open(QuaZip::mdCreate);
QuaZipFile file(zipfile);
file.open(QIODevice::WriteOnly, QuaZipNewInfo("foo.xml"));
QTextStream ts ( &file );
ts << doc.toString();
ts.flush();
file.close();
zipfile.close();