요즘 바빠서 연습삼아서 간단한 코딩을 해봤다.
이미 있는 파일 방식이라서 별 어려움도 없을 뿐더러. 딱히 제대로 사용이 될 것 같지만, 단일 파일의 길이를 알아봐야 되는 일이 있을 것이다.
단일 파일의 길이를 알아야 되는 것은 파일을 읽었을때, 메모리 초과를 일어날 수 도 있고, 다양한 이유가 있을 것이다.
파일의 길이를 알아 내는 것은 간단한 함수를 사용하면 된다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | #include <stdio.h> #include <stdlib.h> long getFileSize(FILE*); int main() { FILE *filePoint = NULL; long fileSize = 0; if((filePoint=fopen("./test.txt","r"))==NULL) { printf("Error : File Not Files"); return -1; } fileSize = getFileSize(filePoint); printf("File Size : %d", fileSize); return 0; } long getFileSize(FILE *filePoint) { long fileSize = 0; fseek(filePoint, 0L, SEEK_END); fileSize = ftell(filePoint); fclose(filePoint); return fileSize; } | cs |
fileSize라는 것으로 파일의 길이를 얻을 수 있다.
여기서 사용하는 함수는 2가지인데, 첫번째는 fseek이다.
fseek라는 것은 파일을 읽는 포인터의 위치를 개발자가 자기 원하는 형태로 바꾸는 것이다.
단일 파일의 길이를 알아내는 방법은 간단하게 파일의 끝으로 파일 포인트를 보낸 다음에, 그 위치를 읽으면 된다.
그래서 단일 파일에서 파일 끝으로 보내는 방법으로
fseek(filePoint, 0L, SEEK_END); 을 사용한다.
이 후에 ftell을 사용한다.
ftell은 파일 포인터 위치의 값을 반환해주는 함수이다.
fseek(filePoint, 0L, SEEK_END);을 한 후에라면, 파일 포인터의 위치의 값이 파일의 끝을 되게 된다. 그래서 ftell은 파일의 끝이 출력되어 파일의 최대 크기가 받아 지게 된다.
하지만, 이건 잘 쓰일 일이 없다.
이유는 sys/stat.h을 사용하면, 이상없이 사용이 가능하기 때문이다.
stat 구조체에서 파일의 크기를 가지고 있기 때문에, 굳이 단일 파일을 열어서 관리할 필요가 없다는 것이다.
하지만, 단일 파일의 크기를 이용해서 쓰거나 읽어 들이는 용도로는 쓸만 한 것 같다.
'연습' 카테고리의 다른 글
Hostringer 가입 및 호스팅 시작. (0) | 2016.10.01 |
---|---|
Youtube Player 블로그에 가지고와서 컨트롤 하기. webSQL 적용. (0) | 2016.08.29 |
mp4및 주소를 이용해서 플레이 가능한 장치 -MPC 소개- (0) | 2016.08.01 |
powershell로 하위 폴더 포함시켜서 파일 이동시키기. (0) | 2016.07.24 |
최근 압축 대회의 근황 (0) | 2016.07.23 |