이미 생성 된 거대한 파일이 있습니다. 필자는 파일의 다른 부분을 그대로 유지하면서 파일의 시작 부분에 몇 가지 데이터를 작성해야합니다. 다음 코드는 기존 파일을 손상시킵니다. 누구든지 올바른 방법으로 나를 도울 수 있습니까?C++ : fstream을 사용하여 바이너리 파일 패치하기
ofstream oFile(FileName,ios::out|ios::binary);
oFile.seekp(0);
oFile.write((char*)&i,sizeof(i));
oFile.write((char*)&j,sizeof(i));
oFile.close();
편집 : 은 기본적으로 내가 시작 등 다양한 위치에 이미 존재하는 파일의 일부 바이트를 덮어 쓰려면. 나는 기록 할 위치의 바이트 주소를 안다. 내 글은 파일 크기를 변경하지 않습니다.
int mode = O_RDWR;
int myFilDes = open (FileName, mode, S_IRUSR | S_IWUSR);
lseek (myFilDes, 0, SEEK_SET);
write (myFilDes, &i, sizeof (i));
write (myFilDes, &j, sizeof (j));
파일의 맨 앞에 새 바이트를 추가하거나 덮어 쓰시겠습니까? – GWW
16 진수 편집기에서 테스트 한 다음 작동하면 C++로 전달해야합니다. – Gareve
덮어 쓸 필요가 있습니다. – Arpit