콘텐츠로 이동

4.11. FILE

File System 함수들이다.

모두 API 의 파일 path 는 절대 path 로 접근 된다. 파일 관련 함수는 모두 blocking 함수들이다. 파일식별자는 플랫폼에서 조사하여 HAL API 를 부르므로 HAL 에서 잘못된 식별자인지를 다시 조사할 필요는 없다.

관련 자료형

설명

파일이나 디렉터리의 특성을 읽어온다.

예를 들어 이 파일이 디렉터리 인지 파일인지, 만든 시간은 언제인지 등을 읽어온 다.

프로토타입

M_Int32 MH_fileAttribute (M_Char* pathname, MH_FileInfo* fi)

매개 변수

  • pathname - [in] 파일이나 디렉터리의 절대 경로명
  • fi - [out] 파일의 특성을 담을 구조체

반환 값

성공

  • 0

실패

  • M_E_BADFILENAME - 경로명 형식이 잘못된 경우
  • M_E_LONGNAME - 파일 이름이 최대 길이 보다 긴 경우
  • M_E_ERROR - 기타 이유로 실패한 경우

부작용

없음

참고 항목

없음

설명

파일 시스템의 여유공간을 알려준다.

프로토타입

M_Int32 MH_fileAvailable (void)

매개 변수

없음

반환 값

성공

  • 시스템의 여유 공간의 바이트 단위의 크기를 반환한다.

실패

  • M_E_ERROR - 기타 이유로 실패할 경우

부작용

없음

참고 항목

없음

설명

파일을 닫는다.

프로토타입

M_Int32 MH_fileClose (M_Int32 fd)

매개 변수

  • fd - [in] 파일 식별자

반환 값

성공

  • 0

실패

  • M_E_ERROR

부작용

없음

참고 항목

없음

설명

해당 디렉터리 내에 있는 파일과 하위 디렉터리를 보여준다. 파일과 디렉터리 이름은 buf 에 NULL 문자 (‘\0’)로 구분되며 끝은 연속된 NULL 문자 두 개로 표시된 다.

프로토타입

M_Int32 MH_fileList (M_Char *root, M_Char* buf, M_Int32 bufSize)

매개 변수

  • root - [in] 디렉터리 이름
  • buf - [out] 파일과 디렉터리 이름을 담을 버퍼
  • bufSize - [in] buf 의 크기

반환 값

성공

  • 0

실패

  • M_E_SHORTBUF - 버퍼 사이즈가 모자랄 경우
  • M_E_BADFILENAME - 파일이름 형식이 잘못된 경우
  • M_E_LONGNAME - 파일 이름이 최대 길이 보다 긴 경우
  • M_E_ERROR - 기타 이유로 실패한 경우

부작용

없음

참고 항목

없음

설명

디렉터리를 만든다.

프로토타입

M_Int32 MH_fileMkDir (M_Char * dirname)

매개 변수

  • dirname - [in] 만들 디렉터리 절대 경로명

반환 값

성공

  • 0

실패

  • M_E_BADFILENAME - 파일 이름 형식이 잘못된 경우
  • M_E_LONGNAME - 파일 이름이 최대 길이 보다 긴 경우
  • M_E_NOENT - 만들고자 하는 디렉터리의 상위 디렉터리가 없을 경우
  • M_E_EXIST - 이미 디렉터리가 존재할 경우
  • M_E_ERROR - 기타 이유로 실패할 경우

부작용

없음

참고 항목

없음

설명

파일을 연다.

flag 는 다음과 같은 값을 가질 수 있다.

flag설명
MH_FILE_OPEN_RDONLY읽기 전용으로 파일을 연다.
MH_FILE_OPEN_WRONLY쓰기 전용으로 파일을 연다. 쓰는 내용은 파일의 끝에 붙는다.
MH_FILE_OPEN_WRTRUNC쓰기 전용으로 파일을 열고 기존 파일의 길이를 0으로 만든다.
MH_FILE_OPEN_RDWR파일을 읽기/쓰기 모두 가능하도록 연다.

프로토타입

M_Int32 MH_fileOpen (M_Char* pathname, M_Int32 flag)

매개 변수

  • pathname - [in] 파일의 절대 경로
  • flag - [in] 위 표 참조

반환 값

성공

  • file 식별자를 반환

실패

  • M_E_NOENT - MH_FILE_OPEN_RDONLY 로 열 때 파일이 없을 경우
  • M_E_BADFILENAME - 파일이름 형식이 잘못되었을 경우
  • M_E_LONGNAME - 파일 이름이 최대 길이 보다 긴 경우
  • M_E_INVALID - 정해진 open option 이외의 option 이 parameter 로 들어왔을 경우
  • M_E_NOSPACE - 파일시스템에 여유 공간이 없을 경우
  • M_E_ERROR - 기타 이유로 실패할 경우

부작용

없음

참고 항목

없음

설명

파일에서 buf 로 크기만큼 읽어온다.

프로토타입

M_Int32 MH_fileRead (M_Int32 fd, M_Char* buf, M_Int32 size)

매개 변수

  • fd - [in] 파일 식별자
  • buf - [out] buffer pointer
  • size - [in] buffer size

반환 값

성공

  • 읽은 바이트 수. Size 가 0 인 경우는 0 를 반환한다. 0 인 경우는 EOF 이다.

실패

  • M_E_EOF - 파일의 끝까지 읽었을 경우
  • M_E_ERROR - 기타 이유로 실패할 경우

부작용

없음

참고 항목

없음

설명

파일을 지운다. 이미 열려 있는 파일일 경우는 지울 수 없다.

프로토타입

M_Int32 MH_fileRemove ( M_Char* pathname)

매개 변수

  • pathname - [in] 파일 절대 경로

반환 값

성공

  • 0

실패

  • M_E_NOENT - 파일이 존재하지 않을 경우
  • M_E_INUSE -파일이 이미 열려 있는 경우
  • M_E_BADFILENAME - 파일이름 형식이 잘못되었을 경우
  • M_E_LONGNAME - 파일 이름이 최대 길이 보다 긴 경우
  • M_E_ERROR - 기타 이유로 실패한 경우

부작용

없음

참고 항목

없음

설명

파일 이름을 바꾼다

프로토타입

M_Int32 MH_fileRename ( M_Char *oldname, M_Char *newname)

매개 변수

  • oldname - [in] 바꾸기 전 절대 경로명
  • newname - [in] 바뀐 후 절대 경로명

반환 값

성공

  • 0

실패

  • M_E_BADFILENAME - 파일이름 형식이 잘못된 경우
  • M_E_LONGNAME - 파일 이름이 최대 길이 보다 긴 경우
  • M_E_NOSPACE - 파일시스템에 여유공간이 없을 경우
  • M_E_ERROR - 기타 이유로 실패한 경우
  • M_E_NOENT – 바꾸기 전 파일이 존재하지 않을 경우
  • M_E_EXIST - 새롭게 바꿀 파일 이름이 이미 존재하는 경우
  • M_E_INUSE - 바꾸기 전 파일이 이미 열려 있을 경우

부작용

없음

참고 항목

없음

설명

디렉터리를 지운다.

지울 디렉터리 안에는 파일이나 디렉터리가 존재하지 않아야 한다

프로토타입

M_Int32 MH_fileRmDir (M_Char * dirname)

매개 변수

  • dirname - [in] 지울 디렉터리 절대 경로

반환 값

성공

  • 0

실패

  • M_E_BADFILENAME - 파일 이름 형식이 잘못된 경우
  • M_E_LONGNAME - 파일 이름이 최대 길이 보다 긴 경우
  • M_E_NOTEMPTY - 디렉터리 내에 파일이나 디렉터리가 존재할 경우
  • M_E_NOENT - 디렉터리가 이미 없을 경우
  • M_E_ERROR - 기타 이유로 실패할 경우

부작용

없음

참고 항목

없음

설명

파일 포인터를 특정 위치로 옮긴다.

옮길 위치계산은 파일의 제일 처음부터 pos 만큼 또는 제일 끝에서 pos 만큼, 아니 면 현재 위치에서 pos 만큼 과 같이 3 가지로 구분 지을 수 있다

프로토타입

M_Int32 MH_fileSeek (M_Int32 fd, M_Int32 pos, M_Int32 where)

매개 변수

  • fd - [in] 파일 식별자
  • pos - [in] 기준점으로부터 옮길 위치, 파일의 크기내에서 양수/음수 모두 가능
  • where - [in] MH_FILE_SEEK_SET, MH_FILE_SEEK_CUR, MH_FILE_SEEK_END 중 하나

반환 값

성공

  • 옮겨진 파일 포인터의 위치

실패

  • M_E_INVALID - 기준점이 MH_FILE_SEEK_SET, MH_FILE_SEEK_CUR, MH_FILE_SEEK_END 중 하나에 포함되지 않을 경우
  • M_E_BADSEEKPOS - 파일 포인터를 옮길 위치가 파일의 범위를 넘어설 경우
  • M_E_ERROR - 기타 이유로 실패할 경우

부작용

없음

참고 항목

없음

설명

fd 라는 식별자를 가지는 파일에 buf 가 가리키는 위치의 데이터를 지정한 size 만큼 쓴다. 파일 시스템에 공간이 부족해서 요청한 파일을 다 쓸 수 없을 경우 쓴 바이트 수를 반환한다.

프로토타입

M_Int32 MH_fileWrite (M_Int32 fd, M_Char* buf, M_Int32 size)

매개 변수

  • fd - [in] 파일 식별자
  • buf - [in] 버퍼 포인터
  • size - [in] size write 할 바이트 개수

반환 값

성공

  • write 한 바이트 수

실패

  • M_E_ERROR - 기타 이유로 실패할 경우
  • M_E_NOSPACE - 파일시스템에 여유공간이 없을 경우

부작용

없음

참고 항목

없음

설명

파일 시스템의 여유공간을 알려준다.

프로토타입

M_Int32 MH_fileTotalSpace (void)

매개 변수

없음

반환 값

성공

파일 시스템의 전체 공간의 바이트 단위의 크기를 반환한다.

실패

  • M_E_ERROR - 기타 이유로 실패할 경우

부작용

없음

참고 항목

없음

설명

파일의 속성을 변경한다. 변경 가능한 속성은 아래의 매개변수 table의 fmode값을 참조한다.

프로토타입

M_Int32 MH_fileSetMode(char* pathName, M_Int32 mode)

매개 변수

  • pathName - [in] 파일의 절대 경로명
  • fmode - [in] 파일 속성 mode
fmode의미
MH_FILEMODE_RDONLY읽기 전용 모드이면 세팅된다.1
MH_FILEMODE_WRONLY쓰기 전용 모드이면 세팅된다.2
MH_FILEMODE_RDWR읽기/쓰기 모드이면 세팅된다.3

반환 값

성공

  • M_E_SUCCESS – 성공

실패

  • M_E_ERROR - 기타 이유로 실패
  • M_E_BADFILENAME – 파일이름 형식이 잘못됨
  • M_E_LONGNAME - 파일이름의 길이가 최대 길이를 초과할 경우
  • M_E_INVALID - mode 가 잘못됨
  • M_E_NOENT – 파일이 존재하지 않음

부작용

없음

참고 항목

없음

설명

디렉토리내의 파일의 개수를 가져온다. 파일의 개수는 서브디렉토리를 포함한 값이다.

프로토타입

M_Int32 MH_fileGetCounts(char* pathName)

매개 변수

  • pathName - [in] 디렉토리의 절대 경로 명

반환 값

성공

  • 디렉토리내 파일 및 디렉토리의 개수

실패

  • M_E_ACCESS - 파일을 접근할 수 없음
  • M_E_ERROR - 기타 이유로 실패
  • M_E_BADFILENAME - 잘못된 경로 이름
  • M_E_LONGNAME - 디렉토리 이름의 길이가 최대 길이를 초과할 경우

부작용

없음

참고 항목

없음

설명

특정 경로상의 파일이 있는지 없는지를 알려준다.

프로토타입

M_Int32 MH_fileIsExist(char* pathName)

매개 변수

  • pathName - [in] 파일의 절대 경로 명

반환 값

성공

  • M_E_SUCCESS – 파일이 존재함

실패

  • M_E_ACCESS - 파일을 접근할 수 없음
  • M_E_ERROR – 기타 이유로 실패
  • M_E_BADFILENAME – 잘못된 경로 이름
  • M_E_LONGNAME – 경로 이름이 최대 길이 보다 긴 경우
  • M_E_NOENT – 파일이 존재하지 않음

부작용

없음

설명

현재 파일의 입출력 포인터를 반환해 준다.

프로토타입

M_Int32 MH_fileTell(M_Int32 fd)

매개 변수

  • fd - [in] 파일 식별자

반환 값

성공

  • 현재 입출력 포인터 위치

실패

  • M_E_INVALIDFD - 잘못된 파일 식별자
  • M_E_ERROR – 기타 이유로 실패

부작용

없음

참고 항목

없음