最近在做一个类似于写日记的程序,想法是左边一列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()接口的一些学习记录相关推荐

  1. Spring Boot 前后端配合及接口化测试学习记录[3]

    前后端不分离 1.对静态资源的映射处理 2.模板引擎: 模板引擎(这里特指用于Web开发的模板引擎)是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,用于网站的模板引擎就会生成 ...

  2. Qt三维图表模块 -- Data Visualization 学习记录

    Qt三维图表模块 ----- Data Visualization Qt数据可视化模块提供了一种将三维图形中的数据可视化为条形图.散点图和曲面图的方法.它对于可视化深度图和大量快速变化的数据特别有用, ...

  3. Java集合——Map接口学习总结

    一.HashMap实现类 1.常用方法 增加:put(K key, V value)删除:clear() remove(Object key)修改:查看:entrySet() get(Object k ...

  4. Java学习总结:55(偶对象保存:Map接口)

    偶对象保存:Map接口 我们前面讲到的Collection属于单值保存父接口,每次只能保存一个对象:而我们这节讲的Map属于偶对象保存接口,利用Map可以保存一对关联数据(按照"key = ...

  5. Java学习(Map接口)

    一.概述: 我们通过查看Map接口描述,发现Map接口下的集合与Collection接口下的集合,它们存储数据的形式不同,如下图. 1. Collection中的集合,元素是孤立存在的(理解为单身), ...

  6. Map接口与学习系列(一)

    2019独角兽企业重金招聘Python工程师标准>>> 闲来无事,梳理了下Java中Map的轮廓,研读了一些有意思的类的源码实现. 下图是Map接口下属的一些子接口与实现,希望能够帮 ...

  7. 学习java的第三十三天,Map集合的概述、Map接口的使用

    一.Map集合概述 Map接口的特点: 用于存储任意键值对(Key-Value) 键:无序.无下标.不允许重复(唯一的) 值:无序.无下标.可以重复 Map父接口的特点:存储一对数据(Key-valu ...

  8. Java基础学习——Java集合(九)Map接口、HashMap、LinkedHashMap实现类、TreeMap实现类

    一.Map接口 二.HashMap实现类.LinkedHashMap实现类 1.HashMap的特点 1)无序,唯一(key唯一,因为底层key按照哈希表(数组+链表)的结构) 2)放入集合的数据的类 ...

  9. java map 教程_Java Map接口

    Java Map接口 在本教程中,我们将学习Java Map接口及其方法. Java collections框架的Map接口提供了Map数据结构的功能. 它实现了Collection接口. map的工 ...

最新文章

  1. 员工拒绝加班,被判赔公司1.8万!网友炸锅
  2. Eclipse MyEclipse下常用快捷键介绍
  3. exe4j生成可执行程序的使用方法
  4. C++ Primer 5th笔记(chap 13 拷贝控制)引用计数
  5. 启动sqlserver_微软的 SQL Server 你学会了吗?
  6. 华北计算机研究所分房,请教公安部第一研究所这样分房合理吗??
  7. java 自定义编译注解 进行代码检查
  8. oracle11g调整表空间和临时表空间大小
  9. java递归方法分析
  10. 开课吧:常见的数据可视化分析工具有哪些?
  11. My tips----搭建一个自己喜欢的风格桌面
  12. YUI 3:Node
  13. OpenCV-Python教程:阈值化(threshold,adaptiveThreshold)
  14. 百度地图三维效果实现
  15. 软件著作权登记时什么情况下必须提供软件设计说明书?
  16. mt4 显示服务器时间,mt4服务器时间设置
  17. 有1亿个数字,其中有2个是重复的,快速找到它,时间和空间要最优
  18. 动态链接库加载失败,可能解决方法。。。。
  19. excel怎么设置自动计算_110个算量软件+80个excel自动计算表,提升效率不加班
  20. 自然语言处理之Attention大详解(Attention is all you need)

热门文章

  1. ##(两个井号)和#(一个井号)都是什么意思C and C++ 2008-09-23 21:18:27 阅读1106 评论0 字号:大中小 订阅 .
  2. Linux 0.11 实验环境搭建
  3. Linux 0.00 代码解析(一)
  4. JS:javaweb——a标签实现跳转并打开新窗口
  5. 电子科大计算机学院硕士培养方案,电子科技大学制订全日制硕士专业学位研究生培养方案基本要求.doc...
  6. 网络发现不了计算机 但是输入IP可以看到,启用了网络发现为什么还是发现不了其他计算机 其他计算机也发现不了我...
  7. 百度浏览器支持html5,百度手机浏览器完美驾驭HTML5
  8. Binder源码分析之驱动层(原)
  9. 以太坊代币标准: ERC20、ERC223的介绍与比较
  10. javascript中对变量类型的判断