📝 바이너리 IO
- 바이너리 I/O 방식
- 데이터의 바이너리 값을 그대로 파일에 저장하거나, 파일의 바이너리 값을 그대로 읽어서 변수나 버퍼에 저장하는 방식
- 텍스트 파일이든 바이너리 파일이든 바이너리 I/O로 입출력가능
- 바이너리 I/O 모드 열기
- ios::binary 모드 속성 사용
- ios::binary가 설정되지 않으면 디폴트가 텍스트 I/O
✏️ 바이너리 파일 복사
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
using namespace std;
int main() {
const char* srcFile = "c:\\temp\\Profile.jpg";
const char* destFile = "c:\\temp\\dest.jpg";
ifstream fsrc(srcFile, ios::in | ios::binary);
if (!fsrc) {
cout << "파일 열기 오류";
return 0;
}
ofstream fdest(destFile, ios::out | ios::binary);
if (!fdest) {
cout << "파일 열기 오류";
return 0;
}
int c;
while ((c = fsrc.get())!=EOF)
{
fdest.put(c);
}
cout << "복사 완료";
fsrc.close();
fdest.close();
}
📝 블록단위 파일 입출력
- 문자/바이트 단위 파일 입출력
- 블록 단위로 파일 입출력
✏️ 블록단위로 텍스트 파일 읽기
#include <iostream>
#include <fstream>
using namespace std;
int main() {
const char* file = "c:\\windows\\system.ini";
ifstream fin;
fin.open(file, ios::in | ios::binary);
if (!fin) {
cout << "파일 열기 오류";
return 0;
}
int count = 0;
char s[32];
while (!fin.eof())
{
fin.read(s, 32);
int n = fin.gcount();
cout.write(s, n);
count += n;
}
cout << "읽은 바이트 수는" << count << endl;
fin.close();
}