关于Qt QFileDevice::map()接口的一些学习记录
最近在做一个类似于写日记的程序,想法是左边一列tableview用来显示所打开的文件夹下的日志文件
右边一个textEdit用来显示单击日志条目时显示对应日志文件,另外可以保存所有日志文件显示时的状态。
最开始想的是通过map接口来进行文件映射(对文件映射不熟悉所以使用它)
在建立关联文件映射的时候,发现如果是新建文件,则映射建立失败
如果是旧文件但如果文件中无内容,也会失败
经过测试和排查,发现接口
uchar *QFileDevice::map(qint64 offset, qint64 size, MemoryMapFlags flags = NoOptions)
map的意思就是将文件从offset位置开始,到size字节的数据映射到内存中(但是size的大小也没有规定诶)
当时想的是,对内存映射进行修改然后文件也会对应修改,就比较爽了赛。
结果
1 try{ 2 if(!item->m_file.isOpen()){ 3 item->m_file.setFileName(item->FilePath); 4 item->m_file.open(QIODevice::ReadWrite); 5 item->m_pvFileBuffer = item->m_file.map(0, item->Size); 6 7 if(item->m_pvFileBuffer == NULL){ 8 //qDebug() << item->m_file.error() ; 9 if(item->m_file.isOpen()) 10 item->m_file.close(); 11 } 12 } 13 }catch(...){ 14 item->m_file.unmap(item->m_pvFileBuffer); 15 item->m_pvFileBuffer = NULL; 16 if(item->m_file.isOpen()) 17 item->m_file.close(); 18 }
View Code
这样子是建立不了内存映射的。
后来在之前增加以下函数,或者是先写入数据或者是先初始化文件一个固定大小,map才能映射成功
//newFile.write(" ");//初始化新文件,否则建立映射会失败 newFile.resize(100);
所以如果用map做这个日志功能,比较麻烦
它不能实现文件自增长,如果你给定了一个初始化大小size,在文件大小达到这个size的时候,你需要重新建立map,否则会失败。
以上是map这个接口遇到的问题,现在在想怎么来做这个功能,有网友看到的话可以提供一点建议 谢谢
转载于:https://www.cnblogs.com/warmSnowFY/p/10505552.html
关于Qt QFileDevice::map()接口的一些学习记录相关推荐
- Spring Boot 前后端配合及接口化测试学习记录[3]
前后端不分离 1.对静态资源的映射处理 2.模板引擎: 模板引擎(这里特指用于Web开发的模板引擎)是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,用于网站的模板引擎就会生成 ...
- Qt三维图表模块 -- Data Visualization 学习记录
Qt三维图表模块 ----- Data Visualization Qt数据可视化模块提供了一种将三维图形中的数据可视化为条形图.散点图和曲面图的方法.它对于可视化深度图和大量快速变化的数据特别有用, ...
- Java集合——Map接口学习总结
一.HashMap实现类 1.常用方法 增加:put(K key, V value)删除:clear() remove(Object key)修改:查看:entrySet() get(Object k ...
- Java学习总结:55(偶对象保存:Map接口)
偶对象保存:Map接口 我们前面讲到的Collection属于单值保存父接口,每次只能保存一个对象:而我们这节讲的Map属于偶对象保存接口,利用Map可以保存一对关联数据(按照"key = ...
- Java学习(Map接口)
一.概述: 我们通过查看Map接口描述,发现Map接口下的集合与Collection接口下的集合,它们存储数据的形式不同,如下图. 1. Collection中的集合,元素是孤立存在的(理解为单身), ...
- Map接口与学习系列(一)
2019独角兽企业重金招聘Python工程师标准>>> 闲来无事,梳理了下Java中Map的轮廓,研读了一些有意思的类的源码实现. 下图是Map接口下属的一些子接口与实现,希望能够帮 ...
- 学习java的第三十三天,Map集合的概述、Map接口的使用
一.Map集合概述 Map接口的特点: 用于存储任意键值对(Key-Value) 键:无序.无下标.不允许重复(唯一的) 值:无序.无下标.可以重复 Map父接口的特点:存储一对数据(Key-valu ...
- Java基础学习——Java集合(九)Map接口、HashMap、LinkedHashMap实现类、TreeMap实现类
一.Map接口 二.HashMap实现类.LinkedHashMap实现类 1.HashMap的特点 1)无序,唯一(key唯一,因为底层key按照哈希表(数组+链表)的结构) 2)放入集合的数据的类 ...
- java map 教程_Java Map接口
Java Map接口 在本教程中,我们将学习Java Map接口及其方法. Java collections框架的Map接口提供了Map数据结构的功能. 它实现了Collection接口. map的工 ...
最新文章
- 员工拒绝加班,被判赔公司1.8万!网友炸锅
- Eclipse MyEclipse下常用快捷键介绍
- exe4j生成可执行程序的使用方法
- C++ Primer 5th笔记(chap 13 拷贝控制)引用计数
- 启动sqlserver_微软的 SQL Server 你学会了吗?
- 华北计算机研究所分房,请教公安部第一研究所这样分房合理吗??
- java 自定义编译注解 进行代码检查
- oracle11g调整表空间和临时表空间大小
- java递归方法分析
- 开课吧:常见的数据可视化分析工具有哪些?
- My tips----搭建一个自己喜欢的风格桌面
- YUI 3:Node
- OpenCV-Python教程:阈值化(threshold,adaptiveThreshold)
- 百度地图三维效果实现
- 软件著作权登记时什么情况下必须提供软件设计说明书?
- mt4 显示服务器时间,mt4服务器时间设置
- 有1亿个数字,其中有2个是重复的,快速找到它,时间和空间要最优
- 动态链接库加载失败,可能解决方法。。。。
- excel怎么设置自动计算_110个算量软件+80个excel自动计算表,提升效率不加班
- 自然语言处理之Attention大详解(Attention is all you need)
热门文章
- ##(两个井号)和#(一个井号)都是什么意思C and C++ 2008-09-23 21:18:27 阅读1106 评论0 字号:大中小 订阅 .
- Linux 0.11 实验环境搭建
- Linux 0.00 代码解析(一)
- JS:javaweb——a标签实现跳转并打开新窗口
- 电子科大计算机学院硕士培养方案,电子科技大学制订全日制硕士专业学位研究生培养方案基本要求.doc...
- 网络发现不了计算机 但是输入IP可以看到,启用了网络发现为什么还是发现不了其他计算机 其他计算机也发现不了我...
- 百度浏览器支持html5,百度手机浏览器完美驾驭HTML5
- Binder源码分析之驱动层(原)
- 以太坊代币标准: ERC20、ERC223的介绍与比较
- javascript中对变量类型的判断