bin文档读写

今天遇到问题。之前测试模组的时候,保存的测试数据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;
}

猜你喜欢

转载自blog.csdn.net/devillixin/article/details/51190578