본문 바로가기
JAVA/Thread,Io

Java io 수업 2번째(소스,타겟,스트림,스캐너)

by 많이느린아이 2024. 6. 13.

Source (소스)

  • 정의: 데이터를 읽어오는 곳, 즉 입력 스트림(input stream)의 출처입니다.
  • 예시:
    • 파일에서 데이터를 읽어오는 경우, 파일이 소스입니다.
    • 네트워크 소켓에서 데이터를 읽어오는 경우, 소켓이 소스입니다.
    • 키보드 입력을 읽어오는 경우, 키보드가 소스입니다.

Target (타겟)

  • 정의: 데이터를 쓰는 곳, 즉 출력 스트림(output stream)의 목적지입니다.
  • 예시:
    • 파일에 데이터를 쓰는 경우, 파일이 타겟입니다.
    • 네트워크 소켓으로 데이터를 보내는 경우, 소켓이 타겟입니다.
    • 화면에 데이터를 출력하는 경우, 화면이 타겟입니다.

바이트 스트림 (Byte Stream)

  • 정의: 데이터를 바이트 단위로 읽고 쓰는 스트림입니다. 8비트(byte) 단위로 데이터를 처리합니다.
  • 사용 용도: 이미지, 오디오, 비디오, 바이너리 파일 등 텍스트가 아닌 데이터를 처리할 때 사용합니다.
  • 주요 클래스:
    • 입력 스트림: InputStream, FileInputStream, BufferedInputStream
    • 출력 스트림: OutputStream, FileOutputStream, BufferedOutputStream

문자 스트림 (Character Stream)

  • 정의: 데이터를 문자 단위로 읽고 쓰는 스트림입니다. 16비트(character) 단위로 데이터를 처리합니다.
  • 사용 용도: 텍스트 데이터를 처리할 때 사용합니다. 예를 들어, 텍스트 파일을 읽거나 쓸 때 사용합니다.
  • 주요 클래스:
    • 입력 스트림: Reader, FileReader, BufferedReader
    • 출력 스트림: Writer, FileWriter, BufferedWriter

 

자바에서 데이터를 읽어들이기 위해 주로 사용되는 두 가지 클래스는 BufferedInputStream과 Scanner입니다. 이 두 클래스는 각각 다른 용도로 사용되며, 기능과 성능 측면에서 차이가 있습니다.

BufferedInputStream

정의: BufferedInputStream은 바이트 단위로 데이터를 읽는 데 사용됩니다. 내부 버퍼를 사용하여 입력 효율성을 높입니다.

용도: 대용량의 바이너리 데이터를 읽어들일 때 주로 사용됩니다. 파일, 이미지, 비디오 등의 바이너리 데이터를 처리할 때 적합합니다.

특징:

  • 버퍼링: 데이터를 메모리 내의 버퍼에 저장하여 여러 번의 IO 호출을 줄입니다.
  • 바이트 스트림: 데이터를 바이트 단위로 읽습니다.
  • 성능: 큰 파일을 읽을 때 성능이 좋습니다. 버퍼링을 통해 디스크 IO 작업을 줄이기 때문입니다.

Scanner

정의: Scanner는 텍스트 입력을 분석할 때 사용됩니다. 정규 표현식이나 구분자를 사용하여 입력을 토큰(token) 단위로 분리할 수 있습니다.

용도: 텍스트 파일이나 사용자 입력을 읽어들이고, 이를 분석하여 처리할 때 사용됩니다. 텍스트 데이터를 줄, 단어, 정수, 실수 등으로 구분하여 읽을 때 적합합니다.

특징:

  • 구분자: 기본 구분자는 공백이지만, 다른 구분자로 설정할 수 있습니다.
  • 텍스트 스트림: 데이터를 문자 단위로 읽습니다.
  • 편의성: 정수, 실수 등 다양한 데이터 타입을 쉽게 읽을 수 있는 메서드를 제공합니다.
  • 유연성: 정규 표현식을 사용하여 입력을 쉽게 분석할 수 있습니다.

'JAVA > Thread,Io' 카테고리의 다른 글

Java.io (txt,디렉토리 생성 및 내용 삽입)  (0) 2024.06.12