파일 및 데이터스트림 함수

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 `은 ` QString`, ` QByteArray` 및 `char*` 버퍼로의 스트리밍을 지원합니다. 단어는 공백으로 구분되며, 앞의 공백은 자동으로 건너뜁니다.
  • QChar 이나 char 유형으로 스트리밍하여 문자 단위로 처리합니다. 이 방법은 파일 구문 분석 시 문자 인코딩이나 줄 끝 규칙에 구애받지 않고 편리하게 입력을 처리하기 위해 자주 사용됩니다. 공백을 건너뛰려면 skipWhiteSpace()를 호출하십시오.

QByteArray \0 및 char* 버퍼를 사용하여 원시 바이트( 포함)와 기존의 8비트 ' '로 종료되는 문자열을 모두 저장할 수 있습니다. 를 사용하는 것이 const char *를 사용하는 것보다 훨씬 편리합니다. 이 방법은 데이터 뒤에 항상 ' ' 종결자가 붙도록 보장하며,\0 QByteArray\0암시적 공유 클래스 (쓰기 시 복사)를 사용하여 메모리 사용량을 줄이고 불필요한 데이터 복사를 방지합니다.

QByteArray 외에도 Qt는 문자열 데이터를 저장하기 위해 QString 클래스를 제공합니다. 대부분의 경우, ` QString `가 가장 적합한 클래스입니다. 이 클래스는 16비트 유니코드 문자를 저장합니다. 그러나 원시 바이너리 데이터를 저장해야 하거나 메모리 절약이 매우 중요한 경우(예: 임베디드 리눅스용 Qt)에는 ` QByteArray `를 사용하는 것이 좋습니다.

© 2026 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.