首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

QIODevice::size()和QIODevice::bytesAvailable()始终返回0

QIODevice::size()和QIODevice::bytesAvailable()是Qt框架中的两个函数,用于获取QIODevice对象的数据大小和可用字节数。

  1. QIODevice::size():
    • 概念:QIODevice::size()函数用于获取QIODevice对象中数据的大小,即字节数。
    • 分类:属于Qt框架中的QIODevice类的成员函数。
    • 优势:可以方便地获取QIODevice对象中数据的大小,便于后续的数据处理。
    • 应用场景:常用于需要获取数据大小的场景,例如文件读取、网络数据传输等。
    • 推荐的腾讯云相关产品:腾讯云对象存储(COS)
    • 产品介绍链接地址:https://cloud.tencent.com/product/cos
  • QIODevice::bytesAvailable():
    • 概念:QIODevice::bytesAvailable()函数用于获取QIODevice对象中当前可读取的字节数。
    • 分类:属于Qt框架中的QIODevice类的成员函数。
    • 优势:可以方便地获取当前可读取的字节数,便于按需读取数据。
    • 应用场景:常用于需要按需读取数据的场景,例如网络数据接收、串口通信等。
    • 推荐的腾讯云相关产品:腾讯云消息队列 CMQ
    • 产品介绍链接地址:https://cloud.tencent.com/product/cmq

需要注意的是,QIODevice::size()和QIODevice::bytesAvailable()返回0的情况可能有以下几种原因:

  1. 数据尚未被写入或读取:如果在调用这两个函数之前没有进行数据的写入或读取操作,那么返回值将为0。
  2. 数据已被读取完毕:如果之前的读取操作已经将数据全部读取完毕,那么返回值也将为0。
  3. 对象未正确打开或设置:如果QIODevice对象未正确打开或设置,可能导致这两个函数返回0。在使用这两个函数之前,需要确保对象已经正确打开并设置了正确的读写模式。

总之,正确使用QIODevice::size()和QIODevice::bytesAvailable()函数可以方便地获取QIODevice对象中数据的大小和可读取的字节数,从而进行相应的数据处理操作。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

qt tcpsocket 接收数据_如何给微信好友发送指定位置

在网络应用中,有时候我们会遇到这样的问题,用TCP不断的接收发送不同类型的数据,数据大小,格式都不相同,起初看了qt的例子,按照例子写的程序效果相当的不好,尤其是在连续发送大数据的时候,接收端根本无法判断数据是否完整了...发送的时候,要先发送这个数据序列化后的大小,然后发送这个数据本身,接收端,首先收到了要接收数据的大小,心里有数了,等到缓存区的数据大于或者等于要接收数据大小的时候,再过去取数据,就保证了数据的正确完整及时...Description=""; ByteData=QByteArray(0);} int size() { int size=0;...return size; } int size() const { int size=0; size=sizeof...()<m_requestDataSize)//判断是否数据接收完整了,不完整就返回等待下一次判断 return; else

75810

Qt实现客户端与服务器消息发送与文件传输(二)

这里Jungle用Qt来简单设计实现一个场景,即: ①两端:服务器QtServer客户端QtClient ②功能:服务端连接客户端,两者能够互相发送消息,传送文件,并且显示文件传送进度。...、文件名大小信息空间、文件名 sendout<<qint64(0)<<qint64(0)<<currentFileName; totalBytes += outBlock.size(); sendout.device...()->seek(0); sendout<<totalBytes<<qint64((outBlock.size()-sizeof(qint64)*2)); bytestoWrite = totalBytes-fileSocket...)),this,SLOT(sendFile())); } QtServer::~QtServer() { } void QtServer::acceptConnection() { ////返回一个...、文件名大小信息空间、文件名 sendout<<qint64(0)<<qint64(0)<<currentFileName; totalBytes += outBlock.size(); sendout.device

2.2K10
  • Qt的QFile

    写入时,行尾终止符将转换为本地编码,例如,对于win32 QIODevice::Unbuffered 设备中的任何缓冲区都被绕过 QFile可以QTextStream或QDataStream一起使用...;将设备中maxSize字节读入数据保存在data中,并返回读取的字节数;当没有更多数据可供读取时,返回0;读过流的末尾为错误,返回-1 。...如果一行不能被读取,但是没有错误发生,这个函数返回0。如果发生错误,将返回可读内容的长度,如果未读,则返回-1,结束的“\0”字节总是附加到数据中,因此maxSize必须大于1。...3.警告:此函数不操作ACLs,这可能会限制其有效性 size() :返回文件大小 qint64 QFile::size() const size说明: 1.对于开放随机访问设备,此函数返回设备的大小...2.对于打开的顺序设备,将返回bytesAvailable()。 3.如果设备关闭,返回的大小将不反映设备的实际大小。

    1.9K10

    QT QFile「建议收藏」

    数据通常使用QDataStream或QTextStream进行读写,但您也可以调用qiodevice继承的函数read()、readLine()、readAll()write()。...QFile还继承了getChar()、putChar()ungetChar(),它们一次工作一个字符。 文件的大小由size()返回。...如果到达了文件的末尾,atEnd()返回true。 直接读取文件 下面的示例逐行读取文本文件: QFile file("in.txt"); if (!...在Unix上,有一些特殊的系统文件(例如在/proc中),size()总是返回0,但是你仍然可以从这样的文件中读取更多的数据;生成数据是对调用read()的直接响应。...然而,在这种情况下,您不能使用atEnd()来确定是否有更多的数据需要读取(因为atEnd()对于声明大小为0的文件将返回true)。

    1.1K30

    Qt之读写文件

    : 函数名 功能 copy() 复制文件 exists() 检查文件是否存在 open() 打开文件 remove() 删除文件 rename() 修改文件名 setFileName() 设置文件名 size...::NotOpen 0x0000 不打开 QIODevice::ReadOnly 0x0001 只读方式 QIODevice::WriteOnly 0x0002 只写方式,如果文件不存在则会自动创建文件...QIODevice::ReadWrite ReadOnly | WriteOnly 读写方式 QIODevice::Append 0x0004 此模式表明所有数据写入到文件尾 QIODevice::Truncate...0x0008 打开文件之前,此文件被截断,原来文件的所有数据会丢失 QIODevice::Text 0x0010 读的时候,文件结束标志位会被转为’\n’;写的时候,文件结束标志位会被转为本地编码的结束为...,例如win32的结束位’\r\n’ QIODevice::UnBuffered 0x0020 不缓存 下面通过代码来看看QFile的使用: //example 1 QFile file

    1.2K10

    CC++ Qt 使用JSON解析库

    JSON是一种轻量级的数据交换格式,它是基于ECMAScript的一个子集,使用完全独立于编程语言的文本格式来存储表示数据,简洁清晰的的层次结构使得JSON成为理想的数据交换语言,Qt库为JSON的相关操作提供了完整的类支持...argc, argv); // 读文件 QString readonly_config = readonly_string("d:/config.json"); // 开始解析 解析成功返回...argc, argv); // 读文件 QString readonly_config = readonly_string("d:/config.json"); // 开始解析 解析成功返回...argc, argv); // 读文件 QString readonly_config = readonly_string("d:/config.json"); // 开始解析 解析成功返回...argc, argv); // 读文件 QString readonly_config = readonly_string("d:/config.json"); // 开始解析 解析成功返回

    2.4K50

    【QT】Qt文件多线程

    QIODevice::WriteOnly 以只写方式打开设备 QIODevice::ReadWrite 以读写方式打开设备 QIODevice::Append 以追加方式打开设备,数据将写到文件末尾...isExecutable 检查是否是可执行文件 fileName 获得文件名 completeBaseName 获取完整的文件名 suffix 获取文件后缀 completeSuffix 获取完整文件后缀 size...); qDebug() << "后缀名:" << fileinfo.suffix().toUtf8().data(); qDebug() << "文件大小:" << fileinfo.size...程序输出 二、多线程 1、线程使用 在Qt中多线程的处理一般是通过QTread类来控制实现的,这部分的内容与Linux内容强相关,我在学习这一块的时候是没有学习过Linux的,所以我是通过0Linux...true,如果等待超时,返回false terminate 终止线程执行,通过操作系统的调度决定是否立即终止 finished 线程结束后发出该信号 创建一个自定义类timethread,继承自QThread

    7910
    领券