08_Qt的IO、内存映射
来源:互联网 发布:差额计算法公式 编辑:程序博客网 时间:2024/06/03 06:20
- 一QByteArrayQString区别
- 二QFile
- 三QBuffer
- 四QTextStream
- 五QDataStream
- 六内存映射文件
一、QByteArray、QString区别
/*字符数组与字符串是有区别的,在传输的时候还是转化为字符数组再进行传输,避免出错*/ QByteArray ba("刘备非"); //9:字节,说明这个字符数组是按字节来存放的 QString str("刘备非"); //3:字符,说明string是根据字符编码来存放的 qDebug() << ba.size() << str.size();
二、QFile
/*直接往文件中写入数据是不建议的,建议转换为字符数组后再存入文件*/ QFile file("chen.txt") ; if( file.open( QIODevice::ReadWrite ) ) { file.write( "good\r\t\n" ) ; file.write( QByteArray("nice\n") ) ; file.write( QString("hello\n").toLatin1().data() ) ; } file.close( ) ;
三、QBuffer
/*在进行输入输出时候,有缓冲区这个概念,在缓冲区没满或是遇到换行、回车之前都在缓冲区中的 **所以利用缓冲区来进行操作能提高效率*/ QBuffer buffer ; buffer.open( QIODevice::ReadWrite ) ; buffer.write( "abc" ) ; buffer.close() ; qDebug()<<buffer.buffer() ;
/*可以通过缓冲区来进行读取然后显示,在重新打开或者调用setBuffer()之前缓存必须被关闭*/ /*send*/ QBuffer buffer ; buffer.open( QIODevice::ReadWrite ) ; QPixmap pixmap("./1.png") ; pixmap.save( &buffer , "PNG") ; buffer.close() ; qDebug()<<buffer.buffer().size() ;//qbytearray的格式,符合传输要求 /*receive*/ QPixmap pixmap2 ; pixmap2.loadFromData( buffer.buffer() ,"PNG") ; QLabel *label = new QLabel ; label->setPixmap( pixmap2 ) ; QWidget *w = new QWidget ; label->setParent( w ) ; w->show() ;
四、QTextStream
/*qfile,qbuffer 都是内存文件(可以这么称呼吧),qtextstream,qdatastream都是操作io的方法*/ /*qtextstream实例:*/ QFile file("./chen.txt") ; file.open( QIODevice::ReadWrite ) ; QTextStream ts( &file ) ; ts<<12<<"chen wei nan"<<1.3<<QString("abc") ; file.close() ;
五、QDataStream
/*qdatastream和qtextstream的区别,qtextstream只能处理普通文本,提供更好的显示效果; qdatastream能做的事比qtextstream更多,序列化数据,能提供更好的数据处理能力*/ QFile file("./chen.txt") ; file.open( QIODevice::ReadWrite ) ; QDataStream ds( &file ) ; ds<<12<<"chen wei nan"<<1.3<<QString("abc") ; file.close() ;
QFile file("./chen.txt") ; file.open( QIODevice::ReadWrite ) ; QDataStream ds( &file ) ; int i ; char *buf ; double d ; QString str ; ds>>i>>buf>>d>>str ; qDebug() << i << buf << d << str << "endl" ; file.close() ;
六、内存映射文件
QFile file("./1.png") ; file.open(QIODevice::ReadWrite ) ; file.seek( 64*1024 ) ;//拓展文件 file.write( "1" ) ; file.close( ) ; file.open( QIODevice::ReadWrite ) ; uchar *ptr = file.map( 0 , 64*1024 ) ;//在内存中映射d空间大小 /*这样直接对内存操作就是对文件操作,对于大文件可以使用这种方式*/ //write file *ptr = 'a' ; ptr[1] = 'b' ; //read file uchar ch = *ptr ; //解除映射 file.unmap( ptr ) ; qDebug() << ch ; file.close() ;
阅读全文
0 0
- 08_Qt的IO、内存映射
- 10_Qt的内存自动释放
- IO端口,IO内存 ,IO映射 内存映射
- IO 静态内存映射详解
- 文件IO(内存映射)
- 内存映射IO空间的读写函数writeb(), writew(), writel()
- 内存映射IO空间的读写函数writeb(), writew(), writel()
- IO端口和IO内存映射【waitting】
- IO端口和IO内存映射
- IO端口和IO内存映射
- IO端口和IO内存映射
- IO端口和IO内存映射
- IO端口和IO内存映射【waitting】
- IO端口映射和IO内存映射
- IO端口映射和IO内存映射 转载
- 11_Qt的Dll、lib
- Java 标准IO、直接IO、内存映射的访问磁盘区别点
- 磁盘IO:缓存IO、直接IO、内存映射
- Android SpannableString Example
- idea "Usage of API documented as @since 1.6+"的解决办法
- NSMutableDictionry保存的数据乱,和NSArray结合得出自己想要的数据
- java 面试 collection IO等基本类
- rxjava2.x
- 08_Qt的IO、内存映射
- Java 注解的定义
- asp.net core 对HttpContext 的扩展
- 01_BootStrap——简介
- 设计模式读书笔记(二)设计模式之创建模式
- Python安装方法之一:anaconda
- ubantu生成lm命令(按时间排)
- Kaldi cvte test
- Spring+Mybatis+SpringMVC+MySql搭建实例