文件中插入数据(指定内容数据上传,下载,,和本地文件同名)

文件中要插入数据,还需要保持原来的格式可以覆盖,但是不能忽略插入以后的数据?最近客户有这样的一个需求,本来我们的文件读取是以二进制流的方式读取和写入的,客户变更了方法,我们该如何解决呢?数据文件还需要上传,下载,命名都和原来文件一致.

为了解决这个问题,我们需要解决一下几个问题:

a.目标文件内容的获取,上传服务器.
b.目标文件的下载,比对原文件,覆盖原文件相同部分内容
c.目标文件的插入.
d后续文件的继续写入.

1.文件的读取,写入方式,我们改为TEXT模式,为了方便查收需要的数据段.
文件上传的时候,备份源文件到指定的目录下,只获取客户需要的数据段,客户看不到备份 的隐藏文件.
BOOL ReadLocalRecipeInfor(CString strRecipeName,BYTE* &dataInfor,long& size)
{

CString strpath=;
CString strFile = strpath+_T(".*");//GetAbsolutePathName(PACKAGE)  + strRecipeName+_T(".pkg") ;
CString strbackUpFile=GetAbsolutePathName(BACKUPPACKAGE)  + strRecipeName+_T(".*"");try
{if(!file.Open(strFile,CFile::modeCreate|CFile::modeNoTruncate|CFile::modeReadWrite|CFile::typeText/*typeBinary*/,&e)){return FALSE;}UINT fileSize=0;fileSize=file.GetLength();size=fileSize;dataInfor =new BYTE[fileSize+1];file.Read(dataInfor,fileSize);file.Close();CopyFile(strFile,strbackUpFile,FALSE);}
catch(CException* e)
{CString strEror=L"error exception...";printf((char*)(LPCTSTR)strEror);
}

2.获取目标文件内容,涉及到文件开始,结束.(这个目标文件的位置,新建再多每一个都是一样的位置 )

下载数据的时候,我们后台把对应的源文件数据复制到目标文件夹中,查找到下载数据的起始位,设置位当前位置,写入数据即可.

3.数据上传,下载.

BOOL WriteLocalRecipeInfor(CString strRecipeName,const BYTE* pRecipeDatas,long nsize)
{
if(nsize<=0)
{
return FALSE;
}
try
{
CString strFile = GetAbsolutePathName(PACKAGE) + strRecipeName+_T(“.“) ;
CString stroldFile=GetAbsolutePathName(BACKUPPACKAGE) + strRecipeName+_T(”.
”);
CopyFile(stroldFile,strFile,FALSE);

	CStdioFile file;CFileException e;CFileFind fileFind;fileFind.FindFile();
if(!file.Open(strFile,CFile::modeCreate|CFile::modeNoTruncate|CFile::modeReadWrite|CFile::typeText/*typeBinary*/,&e)){return FALSE;}UINT fileSize=0;long len;int stpos;BYTE* dataFile;BYTE*	needData;dataFile=new BYTE[1000];file.Read(dataFile,1000);TransForByteString(1000,dataFile,needData,len,stpos,sepos);file.Seek(stpos,SEEK_CUR);file.Write(pRecipeDatas,nsize);//file.WriteString(dataInfor);file.Close();if(needData!=NULL){delete [] needData;needData =NULL;}if(dataFile!=NULL){delete [] dataFile ;dataFile =NULL;}}
catch(CException* e)
{CString strEror=L"error exception...";printf((char*)(LPCTSTR)strEror);
}

4.下载的数据插入到文件中.
file.Seek(stpos,SEEK_CUR);数据插入的位置,这样我们就可以保持原来文件不变,只替换新写入的内容.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/38570.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《昇思25天学习打卡营第27天 | 昇思MindSporeShuffleNet图像分类》

27天 本节学习了ShuffleNet图像分类 ShuffleNetV1是旷视科技提出的一种计算高效的CNN模型&#xff0c;和MobileNet, SqueezeNet等一样主要应用在移动端&#xff0c;模型的设计目标就是利用有限的计算资源来达到最好的模型精度。设计核心是引入了两种操作&#xff1a;Pointwis…

【Python机器学习】模型评估与改进——分组交叉验证

分组交叉验证是非常常见的一种交叉验证策略&#xff0c;它适用于数据中的分组高度相关时。比如我们想构建一个从人脸图片中识别情感的系统&#xff0c;并且收集了100个人的照片的数据集&#xff0c;其中每个人都进行了多次拍摄&#xff0c;分别展示了不同的情感。我们的目标是构…

报错记录:在特定的conda环境中,打开Jupyter Notebook时遇到模块导入错误,但在终端中输入python并导入模块没有问题

在特定的conda环境中&#xff0c;打开Jupyter Notebook时遇到模块导入错误&#xff08;例如&#xff1a;ModuleNotFoundError: No module named XXX&#xff09;&#xff0c;但在终端中输入python并导入模块没有问题&#xff0c;这通常是因为Jupyter Notebook没有正确使用你激活…

使用gradle上传maven工件到新版maven central仓库central.sonatype.com

本文主要用到的插件是sonatype-uploader, 该插件主要功能是上传依赖文件夹到中央仓库。 该文件夹的生成也十分简单&#xff0c;不用担心。 前言 最近在研究maven插件的时候发现发布的网站发生了变化&#xff0c;使用之前的一些插件没能满足我发布依赖的需求&#xff0c;也可…

数据结构与算法笔记:实战篇 - 剖析Redis常用数据类型对应的数据结构

概述 从本章开始&#xff0c;就进入实战篇的部分。这部分主要通过一些开源醒目、经典系统&#xff0c;真枪实弹地教你&#xff0c;如何将数据结构和算法应用到项目中。所以这部分的内容&#xff0c;更多的是知识点的回顾&#xff0c;相对于基础篇和高级篇&#xff0c;其实这部…

fastapi swagger在线接口文档报错

fastapi swagger在线接口文档报错 1、报错信息 Unable to render this definition The provided definition does not specify a valid version field. Please indicate a valid Swagger or OpenAPI version field. Supported version fields are swagger: “2.0” and those …

【收藏】SaaS运营方法论:寻找合适的合作伙伴的四大方法

一、使用关键字研究工具查找您所在行业的相关博客、频道和网站 但是&#xff0c;根据你的业务规模和性质&#xff0c;如果你需要主动出击寻找合适的推广伙伴&#xff0c;而不仅限于让潜在合作伙伴找你&#xff0c;你可以使用关键字研究工具。 实话实说&#xff0c;最好的联盟营…

QT QML 界面设计教程17——滑动条样式

MySlider.qml import QtQuick 2.12 import QtQuick.Controls 2.12 import QtQuick.Controls.impl 2.12 import QtQuick.Templates 2.12 as Template1Template1.Slider {id: controlproperty bool acceptWheel: true //滚轮滑动 property color handleBorderColor: " li…

告别手工录入,企业财务凭证同步迈入智能新时代!

一、客户介绍 某金融租赁股份有限公司作为一家领先的金融租赁企业&#xff0c;一直秉持着创新驱动、服务至上的经营理念。随着业务的快速发展&#xff0c;该公司在财务管理和凭证管理方面遇到了新的挑战。为了更好地提升工作效率&#xff0c;降低运营成本&#xff0c;该公司决…

Spring两大核心思想 IoC和AoP

目录 ✨ 一、什么是IoC 1、定义 &#x1f38a; 2、IoC思想 &#x1f38a; 3、优势 &#x1f38a; 4、对象的管理 &#x1f38a; 存对象&#xff1a;Component 取对象&#xff1a;AutoWired ✨二、什么是DI 1、定义 &#x1f38a; 2、IoC和DI的关系&#x1f38a; 可…

嵌入式Linux系统编程 — 5.7 Linux系统中proc文件系统

目录​​​​​​​ 1 proc文件系统简介 2 proc 文件系统的使用 2.1 使用 cat 命令读取 2.2 使用 read()函数读取 1 proc文件系统简介 /proc 文件系统&#xff0c;也称为进程信息文件系统&#xff08;Process Information file system&#xff09;&#xff0c;是一种在 Li…

Windows电脑自建我的世界MC服务器并与好友远程联机游戏教程

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

同时在一台服务器上使用Java 8和Java 17的技术指南

目录 引言为什么需要同时使用Java 8和Java 17准备工作 安装Java 8和Java 17设置环境变量 Java版本管理工具 使用update-alternatives命令使用SDKMAN! 配置不同的项目使用不同的Java版本 Maven项目Gradle项目 运行脚本和应用程序 使用脚本指定Java版本通过环境变量指定Java版本…

08:结构体

结构体 1、为什么需要结构体2、如何定义结构体3、怎么使用结构体变量3.1、赋值和初始化3.2、结构体变量的输出 1、为什么需要结构体 为了表示一些复杂的事物&#xff0c;而普通的基本类型无法满足实际要求。什么叫结构体 把一些基本类型数据组合在一起形成的一个新的数据类型&…

高性能全局内存池

什么时候使用高性能全局内存池&#xff1f; 1.高并发下有些资源需要被频繁创建和销毁&#xff0c;我们都知道系统调用是很消耗资源的。因此&#xff0c;内存池是一块申请好的资源放在缓存里。 2.频繁使用时增加了系统内存的碎片&#xff0c;降低内存使用效率。内存分配必须起…

11083 旅游背包(优先做)

这个问题可以使用动态规划来解决。我们可以定义一个三维数组dp&#xff0c;其中dp[i][j][k]表示前i种物品&#xff0c;总体积不超过j&#xff0c;总重量不超过k的最大价值。 我们可以使用四重循环来填充这个数组。外层循环遍历所有的物品&#xff0c;第二层循环遍历所有可能的…

2024软件设计师笔记之考点版(一考就过):考试前一天 考点记忆版

软件设计师之一考就过&#xff1a;成绩版 1、栈区&#xff1a;函数调用和返回&#xff0c;由系统控制&#xff1b;存非静态局部变量&#xff1b;用栈实现嵌套调用&#xff08;递归调用&#xff09;&#xff0c;逆波兰式业绩也叫后缀式&#xff0c;用栈进行求值 2、堆区&#x…

windows创建符号链接

1.进入cmd 2.创建链接到文件的符号链接 mklink 目标文件 源文件 3.创建链接到目录的符号链接 mklink /d 目标文件夹 源文件夹

ES6的新特性有哪些

1. 新增了块级作用域&#xff08;let&#xff0c;const&#xff09; 2. 新增了定义类的语法糖&#xff08;class&#xff09; 3. 新增了一种基本数据类型&#xff08;symbol&#xff09; 4. 新增了解构赋值 5. 新增了函数参数的默认值 6. 给数组新增了API 7. 对象和数组新增了扩…

Big Data Tools插件

一些介绍 在Jetbrains的产品中&#xff0c;均可以安装插件&#xff0c;其中&#xff1a;Big Data Tools插件可以帮助我们方便的操作HDFS&#xff0c;比如 IntelliJ IDEA&#xff08;Java IDE&#xff09; PyCharm&#xff08;Python IDE&#xff09; DataGrip&#xff08;SQL …