// 읽기(바이너리로 읽기)
// 쓰기(바이너리로 쓰기)
CFile rawData; // 읽을 파일
CFile processData, // 쓸 파일
CFileException proEx, rawEx; // 예외
if(!rawData.Open(strFullPath, CFile::modeRead | CFile::typeBinary, &rawEx)) // 오류 체크
{
AfxMessageBox("rawData exception!");
rawData.Close();
return;
}
if(!processData.Open(strProData, CFile::modeCreate | CFile::modeWrite | CFile::typeBinary, &proEx))
{
AfxMessageBox("ProcessData exception!");
processData.Close();
return;
}
UINT nRet = 0; // 읽은 크기
char buffer[KD_BUFFER_SIZE]; // 읽을 버퍼 싸이즈
while(1)
{
ZeroMemory(buffer, sizeof(buffer));
nRet = rawData.Read(buffer, sizeof(buffer)); // 읽기
if(nRet == sizeof(buffer)) // 읽을 데이터가 남아있다(확률적으로 맞지)
{
processData.Write(buffer, sizeof(buffer)); // 사실 이거 만들때는 조건이 있어서 일케 분류했다.
}
else // 파일이 끝부분일 경우(안맞을 확률 1/버퍼 싸이즈)
{
processData.Write(buffer, sizeof(buffer));
break;
}
}
// 다 읽고 썼으니깐 핸들 닫자
processData.Close();
rawData.Close();
// 파일 잘 되었는지 친절히 폴더도 열어주자
ShellExecute(NULL, "open", dataDir, NULL, NULL, SW_SHOWNORMAL);
------------------------------------------------------------------------------------------
std::fstream rawData; // 읽고 쓸 파일.(여기에서는 덮어쓰기한다. 요고 디지게 찾았다)
std::fstream headerData; // 읽을 파일(이걸 읽어서 rawData에 덮는 식으로 예제를 짰다)
rawData.open(cFileFullPath, std::ios::binary | std::ios::out | std::ios::in); // Open할때 바이너리, 읽고 쓰기로.
if(!rawData.is_open()) // 잘 열렸는지 인. 아니면 오류 났다고 해주자
{
// 현재 fstream은 unicode가 안되어서?? 잘 모르겠지만 경로에 한글 있음 안된다.
MessageBox("File Open Error.(Don't use Korean title)", "Error", 0);
printf("error\n");
rawData.close();
return;
}
headerData.open(cHeaderPath, std::ios::binary | std::ios::in); // 바이너리로 하고 읽기로.
if(!headerData.is_open())
{
MessageBox("File Open Error.(Don't use Korean title)", "Error", 0);
printf("error\n");
headerData.close();
return;
}
char buffer[KD_BUFFER_SIZE];
memset(buffer, 0, sizeof(buffer));
headerData.read(buffer, sizeof(buffer)); // 읽기
int size = strlen(buffer); // 읽은 사이즈 한번 보고
rawData.write(buffer, sizeof(buffer)); // 쓴다. 덮어서!
rawData.flush(); // 적용!!
rawData.close(); // 닫어
headerData.close(); // 요곳도 닫어
댓글 없음:
댓글 쓰기