C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[3954] Re:[질문] 큰 용량의 파일관리에 관하여...
제라툴 [] 4160 읽음    2000-08-13 00:00
D빌더 님이 쓰신 글 :
: ^^
:
: fread 함수를 쓰면 한번에 읽을 크기를 지정할수가 있는데요...
:
: 한번에 한바이트씩 읽으면 너무많은 회수동안 파일을 액세스해야 하므로
:
: 한번에 많이 읽어서 액세스하는 횟수를 줄여야 된다고 생각합니다.
:
: 그런데 한번에 읽어들이는 용량에도 제한이 있을거라고 생각합니다.
:
: 어떡해야 하나요??
:
: 제가 이런질문을 드리는 이유는
:
: 64메가 짜리 파일을 건드리는 프로그램이 있는데
:
: 끝부분 약 4메가 정도를 잘라내고 다른 내용(그것도 약 4메가정도)을
:
: 갖다붙이는 작업을 하다가 속도가 너무느려서 이런 질문을 올리는것입니다.
:
: 혹시나 다른 편리한 함수가 있다면 가르쳐주셔도 좋습니다.
:

제라툴 입니다.

빌더에서는 TFileStream 이라는 파일 처리 전용 Class가 있습니다.

이걸 사용 해보셨느지...

속도가 빠른지는 잘모르겠느데...

사용 하기는 Api함수보다는 편할겁니다.

그리고 fread함수는 읽어들일 크기를 정할 수 있다는고는 하지만 그건 어느 일정량 까지입니다.

fread는 자체 Buf를 가지고 있어서(fopen할때 Buf크기만큼 메모리에 파일 내용을 할당한다.)

미리 파일 에서 일정양을 읽어서 메모리에 접근 라는 방식이라 어느정도 까지는 속도가 빠를 겁니

다.

일정 Byte 까지는 속도가 빠르지만 Buf크기를 넘어서면 다시 파일에 접근해서 정보를 가지고

오기때문에 속도가 떨어지는 겁니다..

fopen, fread, fwrite같은 경우는 옛날에 만들어진 함수라서

자체 Buf크기가 작아 Memory에잡히는 용량이 얼마되지않아 많은 정보를 읽어 들이는데..

많은 시간이 필요하죠..

하지만 요즘 컴들은 넘 좋아서 예전에 만들어진 함수들이

예전처럼 일을 잘처리 하지못하는 겁니다.

이 문제를 해결하려면 open,write,read 같은 System call을 이용해서 자체적으로

파일에 접근하는 함수를 만드시는 방법에 생각나지 않는군여..

물론 Memory에 잡히는 Buf크기는 fread보다 Buf크기는 엄청 커야겠죠...

컴성능이 좋다면 한 64MB정도....^^ 후후 농담입니다.

그리고 파일 뒷부분을 사용 하실경우 파일에 접근할때 fseek 이나 seek을 통해 파일 뒷부분부터

접근하시는 방법이 좋을 것같습니다.

이정도로 답변이 될런지...

항상 Api함수들이 좋은 건아니죠..

자신 System Call을 이용해서 만든 함수가 기존함수 보다 나을 수도 있습니다.


-제라툴-

+ -

관련 글 리스트
3937 [질문] 큰 용량의 파일관리에 관하여... D빌더 3274 2000/08/10
3954     Re:[질문] 큰 용량의 파일관리에 관하여... 제라툴 4160 2000/08/13
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.