📄 operatefile.cpp
字号:
#include "StdAfx.h"
#include ".\operatefile.h"
//const INT FILEHEAD::type=841225;
COperateFile::COperateFile(void)
:m_fileWrite(),
m_fileRead()
{m_FileLength=0;
//m_fh.key=841225;
::ZeroMemory(&m_fh,sizeof(FILEHEAD));
m_ReadNum=0;
m_Buffer64=0;
m_ReadNum=0;
for (int i=0;i<100000;i++)
m_buffer100000[i]=0;
}
COperateFile::~COperateFile(void)
{
}
INT COperateFile::OpenFile(LPCTSTR lpszFileName,BOOL iRead,LPCTSTR lpszFileType)
{
CFileException e;
if(iRead)
{
if(m_fileRead.Open(lpszFileName,CFile::modeRead | CFile::modeNoTruncate|CFile::typeBinary,&e)==0)
{
char error[100];
::ZeroMemory(error,100);
e.GetErrorMessage((LPTSTR)error,100,NULL);
TRACE("error0 is %s\n",error);
if( m_fileRead.m_hFile!=INVALID_HANDLE_VALUE)
m_fileRead.Close();
return -3;
}
ULONGLONG Len=m_fileRead.GetLength();
m_FileLength=Len;
if(Len%8!=0)
{
m_ReadNum=Len/8+1;
m_fh.fill=(8-Len%8)*8;
}
else{
m_ReadNum=Len/8;
m_fh.fill=0;
}
CString tmp=(CString)lpszFileName;
tmp.Append(".DES");
if(m_fileWrite.Open(tmp,CFile::modeWrite|CFile::modeCreate|CFile::typeBinary,&e)==0)
{
char error[100];
::ZeroMemory(error,100);
e.GetErrorMessage((LPTSTR)error,100,NULL);
TRACE("error1 is %s\n",error);
if( m_fileRead.m_hFile!=INVALID_HANDLE_VALUE)
m_fileWrite.Close();
return -3;
}
return 0;
}
else
{
if(m_fileRead.Open(lpszFileName,CFile::modeRead | CFile::modeNoTruncate|CFile::typeBinary,&e)==0)
{
char error[100];
::ZeroMemory(error,100);
e.GetErrorMessage((LPTSTR)error,100,NULL);
TRACE("error2 is %s\n",error);
if( m_fileRead.m_hFile!=INVALID_HANDLE_VALUE)
m_fileRead.Close();
return -3;
}
ULONGLONG Len=m_fileRead.GetLength()-sizeof(FILEHEAD);
m_FileLength=Len;
if(Len%8!=0)
m_ReadNum=Len/8+1;
else
m_ReadNum=Len/8;
INT tmpType;
m_fileRead.Read(&tmpType,sizeof(INT));
if(tmpType!=841225)
{ TRACE("m_fh.charhead %d\n",m_fh.type);
TRACE("m_charhead is %d\n",tmpType);
if( m_fileRead.m_hFile!=INVALID_HANDLE_VALUE)
m_fileRead.Close();
return -1;
}
m_fileRead.Read(&m_fh.fill,sizeof(INT));
CString tmp=(CString)lpszFileName;
tmp.Truncate(tmp.GetLength()-4);
if(m_fileWrite.Open(tmp,CFile::modeWrite|CFile::modeCreate|CFile::typeBinary,&e)==0)
{
char error[100];
::ZeroMemory(error,100);
e.GetErrorMessage((LPTSTR)error,100,NULL);
TRACE("error3 is %s\n",error);
if( m_fileRead.m_hFile!=INVALID_HANDLE_VALUE)
m_fileWrite.Close();
return -3;
}
return 0;
}
}
ULONGLONG COperateFile::GetData(INT i){
return m_buffer100000[i];
}
ULONGLONG COperateFile::GetData(){
return m_Buffer64;
}
INT COperateFile::ReadData(BOOL is8)
{
if(is8)
{
UINT size=m_fileRead.Read(&m_Buffer64,sizeof(ULONGLONG));
if( size<=0)
return 0;
m_Buffer64=m_Buffer64<<(8*(sizeof(ULONGLONG)-size));
return 8;
}
if(m_FileLength>=800000)
{
m_fileRead.Read(m_buffer100000,sizeof(ULONGLONG)*100000);
m_FileLength-=800000;
return 100000;
}
else
{
UINT size=m_fileRead.Read(&m_Buffer64,sizeof(ULONGLONG));
if( size<=0)
return 0;
m_Buffer64=m_Buffer64<<(8*(sizeof(ULONGLONG)-size));
return 8;
}
}
BOOL COperateFile::SaveDesFile(BOOL DOE,ULONGLONG num,INT len)
{
if(DOE)
{
if(len==100000)
m_fileWrite.Write((const void*)m_buffer100000,sizeof(ULONGLONG)*100000);
else {
m_fileWrite.Write((const void*)&m_Buffer64,sizeof(ULONGLONG));
}
}
else
{
if(len==100000)
m_fileWrite.Write((const void*)m_buffer100000,sizeof(ULONGLONG)*100000);
else {
if(num==m_ReadNum)
{
m_Buffer64=m_Buffer64>>m_fh.fill;
m_fileWrite.Write((const void*)(&m_Buffer64),sizeof(ULONGLONG)-m_fh.fill/8);
}
else
m_fileWrite.Write((const void*)&m_Buffer64,sizeof(ULONGLONG));
}
}
return true;
}
BOOL COperateFile::WriteFileHead(){
m_fh.type=841225;
m_fileWrite.Write((const void*)(&m_fh),sizeof(FILEHEAD));
return true;
}
BOOL COperateFile::CloseFile(BOOL iRead)
{
if(iRead)
{if( m_fileRead.m_hFile!=INVALID_HANDLE_VALUE)
m_fileRead.Close();
}
else
{
if( m_fileWrite.m_hFile!=INVALID_HANDLE_VALUE)
m_fileWrite.Close();
}
return true;
}
void COperateFile::DeleteFile(LPCTSTR name)
{
m_fileRead.Remove(name);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -