프로그램을 개발하면 반드시 파일 입출력을 구현해야 할 것이다. Modern C++ 에서도 filesystem을 제공해주고 있기 때문에 qt가 제공하는 기능을 꼭 사용해야할 이유는 이젠 약해진것 같지만 좀더 세분화되어 있으니 익혀보자.
- QDir
샘플코드로 설명을 하자면 QDir을 이용하여 D드라이브에서 Test\\subtest 폴더가 있는지 확인하고 없으면 생성한 뒤 이름을 바꾸는 것이다. 추가적으로 PC에 연결된 드라이브 목록과 경로 특정 폴더안에 있는 파일 리스트도 얻을 수 있다.
관심있게 봐야할 부분은 만약 크로스 컴파일이 되어야 한다면 폴더 구분자로 QDir에서 제공하는 separator() 함수를 사용해야만 한다. 이것을 이용하면 윈도우에서는 '\' 로 다른 계열에서는 '/'를 이용할 것이다.
entryInfoList() 함수는 필터를 가질 수 있는데 재미있는 것들을 추가할 수 있다. 아래처럼 ., .. 파일이 기본적으로 표시되는데 QDir::NoDotAndDotDot 같은 필터를 적용하면 위 두개 파일들을 가져오지 않을 수 있다.
- QFileInfo
위의 entryInforList() 함수를 이용하면 QFileInfoList를 얻을 수 있는데. QFileInfo 인스탄스로 구성된 파일 목록이 된다.
QFileInfo를 통해 파일의 사이즈, 생성날짜, 수정 날짜등을 확인할 수 있다.
- QStorageInfo
드라이브의 정보를 알려주는 클래스이다. 다음 간단한 예제를 보자.
간단히 드라이브의 이름, 포맷 스타일, 장치관리에서 볼수 있는 디바이스 이름과 공간에 대해서 볼 수 있다. 아래를 보면 bytesAvailable() 와 byteFree()가 동일 공간으로 나온다. 아마 윈도우 계열을 사용자는 어느것을 사용해도 같을 것이지만 리눅스 같은 경우 현재 사용자별도 별도의 공간을 할당할 수 있는 경우는 좀 달라진다.
즉 available 은 그 사용자가 사용할 수 있는 공간을 리턴해주고 bytesFree() 는 전체 디바이스에서의 여유공간을 말한다.
- QFile
파일을 처리하는 클래스이다. file을 열때 옵션을 두어 읽기, 쓰기등을 제어할 수 있다. QFile은 파일의 읽기, 쓰기등에 대한 많은 함수들을 재정의하고 있다. 또한 파일 관련해서 여러 오류들이 많이 발생함으로 errorString() 함수의 존재감을 보여준다.
'Language & Toolkit > QT' 카테고리의 다른 글
C++ 과 Qt/QML을 이용한 개발 - 007: (Quantum Jump-1)주소록 프로그램-2. ListView 구현 (2) | 2022.01.09 |
---|---|
C++ 과 Qt/QML을 이용한 개발 - 007: (Quantum Jump-1)주소록 프로그램-1. GUI 기본 구성 (3) | 2022.01.05 |
C++ 과 Qt/QML을 이용한 개발 - 005: (Qt5 기본) 자료구조 (3) | 2021.05.24 |
C++ 과 Qt/QML을 이용한 개발 - 004: (Qt5 기본) Signal and Slot (0) | 2021.05.24 |
C++ 과 Qt/QML을 이용한 개발 - 003: (Qt5 기본) Hello World (0) | 2021.05.24 |