파일 및 데이터스트림 함수
QIODevice 클래스는 모든 I/O 장치의 기본 인터페이스 클래스입니다. Qt CoreQIODevice 는 데이터 블록의 읽기 및 쓰기를 지원하는 장치에 대한 공통 구현과 추상 인터페이스를 모두 제공합니다. 장치는 메모리 버퍼, 파일 또는 데이터스트림이 될 수 있습니다.
QFile 같은 일부 서브클래스는 데이터의 중간 저장을 위해 메모리 버퍼를 사용하여 구현되었습니다. 이는 읽기/쓰기 연산을 줄여 프로그램 속도를 높입니다. 버퍼링을 사용하면 getChar() 및 putChar()와 같은 함수가 장치 자체에서 직접 작동하는 대신 메모리 버퍼에서 작동할 수 있으므로 속도가 빨라집니다.
QFile 클래스는 파일 읽기 및 쓰기 함수를 제공합니다. QFile 는 단독으로 사용하거나 QTextStream 또는 QDataStream 와 함께 사용하면 더 편리하게 사용할 수 있습니다.
QBuffer QIODevice 인터페이스를 사용하여 QByteArray 에 액세스할 수 있습니다. QByteArray 은 표준 랜덤 액세스 파일과 동일하게 취급됩니다. 예를 들어
QBuffer buffer; char ch; buffer.open(QBuffer::ReadWrite); buffer.write("Qt rocks!"); buffer.seek(0); buffer.getChar(&ch); // ch == 'Q' buffer.getChar(&ch); // ch == 't' buffer.getChar(&ch); // ch == ' ' buffer.getChar(&ch); // ch == 'r'
open()를 호출하여 버퍼를 엽니다. 그런 다음 write() 또는 putChar()를 호출하여 버퍼에 쓰고 read(), readLine(), readAll() 또는 getChar()를 호출하여 버퍼에서 읽습니다. size()는 버퍼의 현재 크기를 반환하며, seek()를 호출하여 버퍼의 임의의 위치를 찾을 수 있습니다. 버퍼에 대한 액세스가 끝나면 close()를 호출합니다.
QDataStream 클래스는 바이너리 데이터를 QIODevice 으로 직렬화합니다. 데이터 스트림은 인코딩된 정보의 이진 스트림으로 호스트 컴퓨터의 운영 체제, CPU 또는 바이트 순서와 100% 무관합니다. 예를 들어, Windows를 사용하는 PC에서 작성한 데이터 스트림은 Solaris를 실행하는 Sun SPARC에서 읽을 수 있습니다. 데이터 스트림을 사용하여 인코딩되지 않은 원시 바이너리 데이터를 읽거나 쓸 수도 있습니다.
QDataStream 에서 직렬화할 수 있는 데이터 타입에 대한 자세한 내용은 Qt 데이터 타입 직렬화를 참조하십시오.
QTextStream 클래스는 텍스트를 읽고 쓰기 위한 편리한 인터페이스를 제공합니다. QTextStream 은 QIODevice, QByteArray 또는 QString 에서 작동할 수 있습니다. QTextStream 의 스트리밍 연산자를 사용하면 단어, 줄, 숫자를 편리하게 읽고 쓸 수 있습니다. 또한 QTextStream 을 사용하여 콘솔 입력을 읽고 콘솔 출력을 쓰는 것이 일반적입니다.
텍스트 파일을 읽을 때 QTextStream 을 사용하는 일반적인 방법은 세 가지가 있습니다:
- readLine() 또는 readAll()을 호출하여 청크 단위로 읽습니다.
- QTextStream 은 QStrings, QByteArrays 및 char* 버퍼로 스트리밍을 지원합니다. 단어는 공백으로 구분되며 선행 공백은 자동으로 건너뜁니다.
- 문자 단위, QChar 또는 문자 유형으로 스트리밍하여 문자 단위로 입력합니다. 이 방법은 문자 인코딩 및 줄 끝 의미와 관계없이 파일을 구문 분석할 때 편리한 입력 처리를 위해 자주 사용됩니다. 공백을 건너뛰려면 skipWhiteSpace()를 호출합니다.
QByteArray 는 원시 바이트( \0
)와 기존 8비트 '\0'으로 끝나는 문자열을 모두 저장하는 데 사용할 수 있습니다. QByteArray 를 사용하는 것이 const char *를 사용하는 것보다 훨씬 편리합니다. 항상 데이터 뒤에 '\0' 종결자가 오도록 하고, 암시적으로 공유 클래스 (복사 시 쓰기)를 사용하여 메모리 사용량을 줄이고 불필요한 데이터 복사를 방지합니다.
Qt는 QByteArray 외에도 문자열 데이터를 저장하는 QString 클래스도 제공합니다. 대부분의 경우 QString 클래스를 사용하는 것이 가장 적합합니다. 이 클래스는 16비트 유니코드 문자를 저장합니다. 그러나 원시 바이너리 데이터를 저장해야 하는 경우나 메모리 절약이 중요한 경우(예: 임베디드 Linux용 Qt)에는 QByteArray 을 사용하는 것이 좋습니다.
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.