我的应用程序通过QTcpSocket将对象发送到服务器。
客户端:
void client::sendFile(QString path)
{
QFile toSend(path);
QByteArray rawFile;
rawFile = toSend.readAll();
QDataStream out(cl);
out >> rawFile;
}服务器:
void server::handleClient()
{
QTcpSocket *curCl = srv->nextPendingConnection();
QByteArray z;
QDataStream in(curCl);
in >> z;
QFile qwe("test.dat");
qwe.write(z);
qwe.close();
}问题是什么都没有发生,但是调试控制台告诉我:
QIODevice::write: device not open
QIODevice::read: device not open..。但是QDataStream对象不允许我设置打开模式!:(有什么问题吗?
发布于 2014-06-06 16:43:45
QFile + QFile.write (或QFile.read)需要QFile.open,参见示例:
写入:
QFile qwe("test.dat");
if(qwe.open(QIODevice::WriteOnly | QIODevice::Text)) {
qwe.write(z);
qwe.close();
} else {
qDebug() << "Error";
}或
#include <QTextStream>
...
QFile qwe("test.dat");
if(qwe.open(QIODevice::WriteOnly | QIODevice::Text)){
QTextStream out(&qwe);
out << "This file is generated by Qt\n";
qwe.close();
} else {
qDebug() << "Error";
}阅读:
QFile toSend(path);
if(toSend.open(QIODevice::ReadOnly | QIODevice::Text)) {//Open "read file"
QByteArray rawFile;
rawFile = toSend.readAll();
QDataStream out(cl);
out >> rawFile;
toSend.close();//close
}https://stackoverflow.com/questions/24086308
复制相似问题