欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 国际 > 文件中插入数据(指定内容数据上传,下载,,和本地文件同名)

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

2025/1/16 2:42:11 来源:https://blog.csdn.net/u011637657/article/details/140104974  浏览:    关键词:文件中插入数据(指定内容数据上传,下载,,和本地文件同名)

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

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

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);数据插入的位置,这样我们就可以保持原来文件不变,只替换新写入的内容.

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com