您的位置:首页 > 其它

bin文档读写

2016-04-19 14:59 211 查看
今天遇到问题。之前测试模组的时候,保存的测试数据bin文档多了2个byte数据。

解决紧急问题当然使用最熟悉方式。

于是用我准备的TestWinControl工程写了如下代码。

bin Files文件夹中有100个1~100编号的.bin文档。重新读写后

bin文件夹中生成100个已经去掉最后两个byte的.bin文档。

#include "stdafx.h"
#include <afx.h>
#include <iostream>

using namespace std;

CString GetExeDir()
{
CString ExePath, ExeDir;
TCHAR tempPath[MAX_PATH] = {0};
GetModuleFileName(NULL,tempPath,MAX_PATH);
ExePath = tempPath;
//NOTICE: 得到的路径最后带 *\*
ExeDir  = ExePath.Left( ExePath.ReverseFind(_T('\\'))+1) ;
return ExeDir;
}

void WriteBin(CString szPath, unsigned char* data, int size)
{
FILE* pFile;
if (_wfopen_s(&pFile, szPath.GetBuffer() , _T("wb+")) == 0)
{
fwrite(data, 1, size, pFile);
fclose(pFile);
szPath.Format(_T("%s write"),szPath);
cout << "write size: " << size << endl;
}
}

void ReadBin(CString szPath, unsigned char* data, int size)
{
FILE* pFile;
if (_wfopen_s(&pFile, szPath.GetBuffer() , _T("rb+")) == 0)
{
fread(data, 1, size, pFile);
fclose(pFile);
szPath.Format(_T("%s read"),szPath);
cout << "read size: " << size << endl;
}
}

int main()
{
const int size = 1406;
unsigned char data[size] = {0};
memset(data, 0, size);

const int wsize = 1404;
unsigned char wdata[wsize] = {0};
memset(wdata, 0, wsize);

CString exeDir = GetExeDir();
CString readPath;
CString writePath;
CreateDirectory(exeDir + _T("bin\\"), NULL);

CFileFind finder;
BOOL bw = finder.FindFile(exeDir + _T("bin Files\\*.bin"));
while(bw)
{
bw = finder.FindNextFile();
if (finder.IsDots()) continue;
if (finder.IsDirectory()) continue;

CString fileName = finder.GetFileName();
readPath = exeDir + _T("bin Files\\") + fileName;
writePath = exeDir + _T("bin\\") + fileName;
ReadBin(readPath, data, size);
memcpy(wdata, data, wsize);
WriteBin(writePath, wdata, wsize);
}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  脚本