文件操作求助呢!欢迎光临!

modicum_lf 2012-07-17 02:55:48

在写数据到文件的时候,每写入一次,文件的开头就会出现类似于文件包头的信息!(非本人写入)
请问怎么控制每次不写入这些信息。

tks
...全文
115 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
modicum_lf 2012-07-17
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]
写的时候用了CArchive ,读的时候也用CArchive,要么都不要用CArchive


C/C++ code

CStdioFile dstFile(cs->m_FileName, CFile::Create|CFile::modeWrite);
dstFile.WriteString(fileBuffer);
dstFile.Close();
[/Quote]

谢谢 ,
zgl7903 2012-07-17
  • 打赏
  • 举报
回复
写的时候用了CArchive ,读的时候也用CArchive,要么都不要用CArchive


CStdioFile dstFile(cs->m_FileName, CFile::Create|CFile::modeWrite);
dstFile.WriteString(fileBuffer);
dstFile.Close();
深圳老码农 2012-07-17
  • 打赏
  • 举报
回复
这个我也写过,可是这样,打开文件的时候,如果没有这个文件,则写文件头,如果有这个文件则不写文件头,用布尔变量。
当然,把指针设置指向最后。
modicum_lf 2012-07-17
  • 打赏
  • 举报
回复

我贴了整个函数 ,前面是些记录 本来是永临时文件拷贝删除的,
最后改变主意用CArchive ,写入数据没啥问题 ,就是写进去后 文件的行首会有几个字节类似文件包头的形势的东西 ,手动修改那块没作用, 请问下各位大神都是怎么做的!
小弟最近才写MFC
modicum_lf 2012-07-17
  • 打赏
  • 举报
回复



int WriteData2File( CStuManageView *cs)
{

CString dataStr;
CString tempStr;

std::vector<int>::size_type iModify = 0;
std::vector<int>::size_type iDelete = 0;
std::vector<int>::size_type iAdd = 0;

std::vector<UINT32>::iterator iter;

CStdioFile srcFile(cs->m_FileName, CStdioFile::modeReadWrite);

// write 0xfffe at the beginning of the file, this makes Notepad reads Unicodes well
//WORD unicode_identifier = 0xfeff;

CString fileBuffer;


UINT32 LinesCount = 1;

while(srcFile.ReadString(dataStr))
{

if(LinesCount == 1)
{
;
}
for(iDelete = 0; iDelete != cs->m_DeleteLinesVec.size(); ++iDelete) //check the delete record
{
if(-1 != cs->m_DeleteLinesVec[iDelete])
{
if(LinesCount == cs->m_DeleteLinesVec[iDelete])
{
LinesCount += 1;
cs->m_DeleteLinesVec[iDelete] = -1;

goto endWhile;
}
}


}

for(iModify = 0 ; iModify != cs->m_ModifyLinesVec.size(); ++iModify) // check the modify record
{

if(-1 != cs->m_ModifyItemsVec[iModify])
{
if(LinesCount == cs->m_ModifyLinesVec[iModify])
{
tempStr.Format(_T("S:%d, %s, %d, %d, %d\r\n"), cs->StuVec.at(cs->m_ModifyItemsVec.at(iModify)).stuId, cs->StuVec.at(cs->m_ModifyItemsVec.at(iModify)).stuName, cs->StuVec.at(cs->m_ModifyItemsVec.at(iModify)).stuScoreCh,
cs->StuVec.at(cs->m_ModifyItemsVec.at(iModify)).stuScoreEh, cs->StuVec.at(cs->m_ModifyItemsVec.at(iModify)).stuScoreMh);

fileBuffer += tempStr;

LinesCount += 1;
cs->m_ModifyLinesVec[iModify] = -1;
cs->m_ModifyItemsVec[iModify] = -1;

goto endWhile;
}

}

}

dataStr += "\r\n";
fileBuffer += dataStr;

LinesCount += 1;
endWhile:
;
}

for(iAdd = 0; iAdd != cs->m_AddItemVec.size(); ++iAdd) //check the addition record
{
if(-1 != cs->m_AddItemVec[iAdd])
{
tempStr.Format(_T("S:%d,%s, %d, %d, %d\r\n"), cs->StuVec.at(cs->m_AddItemVec.at(iAdd)).stuId, cs->StuVec.at(cs->m_AddItemVec.at(iAdd)).stuName, cs->StuVec.at(cs->m_AddItemVec.at(iAdd)).stuScoreCh,
cs->StuVec.at(cs->m_AddItemVec.at(iAdd)).stuScoreEh, cs->StuVec.at(cs->m_AddItemVec.at(iAdd)).stuScoreMh);

cs->m_AddItemVec[iAdd] = 0;


fileBuffer += tempStr;
}

}

srcFile.Close();

CFile hFile(cs->m_FileName, CFile::modeWrite|CFile::typeBinary );
CArchive arStore(&hFile, CArchive::store);

arStore << fileBuffer;

arStore.Close();
hFile.Close();

//CString srcFileName = srcFile.GetFileName();
//CopyFile(tempFileName, srcFileName, false);

//remove(tempFileName); //remove the temp file.

return 1;
}
q_orange 2012-07-17
  • 打赏
  • 举报
回复
可以再自己写入之前先清空文档。。然后再写入
wenh7788 2012-07-17
  • 打赏
  • 举报
回复
用的是什么写入的?
CStdioFile还是啥??
看看那个
CStdioFile m_StidoFile;
m_StdioFile.Open(路径,标志);
看看你的标志是啥?
ouyh12345 2012-07-17
  • 打赏
  • 举报
回复
得看是怎么写的
楼主是使用了别人的代码吧,查看一下源文件,或干脆自己写
zgl7903 2012-07-17
  • 打赏
  • 举报
回复
Seek To Begin
李_军 2012-07-17
  • 打赏
  • 举报
回复
你是怎么写的,代码发出来看看,w+方式追加

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧