fstream 출력 write 에 관한 질문입니다.
void ManageFile::save( char* pBlock, int blockIndex )
{
FS.seekp( BLOCK_SIZE*blockIndex, ios::beg );
FS.write( pBlock, BLOCK_SIZE );
}
위 함수를 만들고요
fstream FS; // 파일 IN, OUT 스트림
// FS.open( fileName, ios::nocreate | ios::in | ios::out | ios::binary );
FS.open( fileName, ios::nocreate | ios::in | ios::out );
// 파일의 첫 생성 //
if(!FS) {
// FS.open( fileName, ios::in | ios::out | ios::trunc | ios::binary );
FS.open( fileName, ios::in | ios::out | ios::trunc );
fileSize=0;
totalBlock=0;
curBlock=0;
first = true;
}
// 파일 로드 했을 때 //
else{
FS.seekg(0,ios::end);
fileSize = FS.tellg();
totalBlock = (int)(fileSize/BLOCK_SIZE)+1;
curBlock=0;
first = false;
FS.seekg(0,ios::beg);
}
처음에 파일이 없을 경우를 생각해 이런식으로 생성을 했는데요.
초반에 buffer에 내용을 채워서
save ( buffer, 0 ); 을 호출했는데
분명히 save함수는 호출됩니다. 즉 FS.write( pBlock, BLOCK_SIZE );가 실행되었음에도
파일에는 아무것도 적히지가 않습니다. (스페이스 조차 없네요...) 내용 없는 파일만 생성됩니다;;;
write함수를 아무내용도 없는 곳에는 못 쓰나요? 아니면 다른 이유 때문인가요???
파일 스트림을 이용한 buffer 내용을 파일에 쓰는 방법은 없을까요?
char buffer[4096]이 한꺼번에 파일로 넘어가야 하기 떄문에;;
<< operator는 쓰는건 막막하네요;; (버퍼안에 null 문자가 있을수도 있는 관계로 더;;; )
댓글 달기