JAVA stream (230704)

이원건·2023년 7월 4일
0

JAVA

목록 보기
31/33
post-thumbnail

1. IO stream 이란?

  • IO stream은 Input Output을 할 때 입출력 작업을 수행하기 위한 기본적인 클래스와 인터페이스의 집합

2. 보조스트림에 대하여 설명하시오.

  • "보조 스트림"은 기본 스트림 (InputStream 또는 OutputStream)을 래핑하여 추가적인 기능을 제공하는 스트림입니다. 보조 스트림은 데이터의 처리, 변환, 버퍼링, 압축 등 다양한 작업을 수행할 수 있습니다. 여러 가지 보조 스트림이 제공되며, 다음은 몇 가지 중요한 보조 스트림입니다:

    1. Buffered 스트림: BufferedInputStream 및 BufferedOutputStream은 버퍼를 사용하여 입출력 성능을 향상시킵니다. 내부적으로 데이터를 버퍼에 저장하고 한 번에 블록 단위로 읽거나 쓸 수 있습니다. 이로 인해 입출력 작업의 효율성이 증가합니다.

    2. Data 스트림: DataInputStream 및 DataOutputStream은 기본 데이터 타입(primitive type)의 값들을 읽고 쓸 수 있습니다. 이들 스트림은 바이트 단위로 데이터를 읽고 쓰며, 자바의 기본 데이터 타입을 이진 형식으로 변환하여 처리합니다.

    3. Object 스트림: ObjectInputStream 및 ObjectOutputStream은 객체 직렬화(serialization)를 지원합니다. 객체 직렬화는 객체를 이진 형식으로 변환하여 저장하거나 네트워크를 통해 전송할 수 있도록 합니다. 이를 통해 객체의 상태를 보존하고 복원할 수 있습니다.

    4. 압축 스트림: GZIPInputStream 및 GZIPOutputStream은 GZIP 압축을 지원합니다. 이들 스트림을 사용하여 데이터를 압축하거나 압축 해제할 수 있습니다. 압축을 통해 데이터 크기를 줄이고 전송 시간을 단축시킬 수 있습니다.

    5. 문자 스트림: InputStreamReader 및 OutputStreamWriter는 바이트 스트림을 문자 스트림으로 변환합니다. 바이트 단위로 읽거나 쓰는 스트림을 문자 단위로 읽거나 쓸 수 있도록 합니다. 문자 인코딩 및 디코딩에 유용합니다.

    이 외에도 Java에서는 다양한 보조 스트림이 제공됩니다. 이러한 보조 스트림들은 기본 스트림에 추가적인 기능을 제공하여 입출력 작업을 효율적으로 처리할 수 있게 도와줍니다


3. 문자 스트림과 바이트 스트림의 차이는?

문자 스트림은 데이터를 문자 단위로 처리하며, 문자 인코딩과 관련된 작업을 수행. 텍스트 데이터를 다룰 때 유용

바이트 스트림은 데이터를 바이트 단위로 처리하며, 이진 데이터에 적합.

문자 스트림은 텍스트 데이터 처리에, 바이트 스트림은 이진 데이터 처리에 사용.


4. 아래의 조건에 따라 copy 프로그램을 완성하시오.

  • 문제
  • buffered 보조스트림 달 것
  • 출력
대상 파일: F:\a.java
사본 이름: F:\b.java
카피 되었습니다.
  • 코드
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Scanner;

public class BufferedStreamExample {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		final int EOF = -1;
		String src, dst;
		System.out.print("대상 이름: ");
		src = scanner.nextLine();
		System.out.print("사본 이름: ");
		dst = scanner.nextLine();
		
		try(BufferedInputStream in = new BufferedInputStream(new FileInputStream(src));
				BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(dst))){
			int data;
			while(true) {
				data = in.read();
				if(data == EOF) break;
				
				out.write(data);
			}
			System.out.println("카피 되었습니다.");
		}catch (IOException e) {
			e.printStackTrace();
		}
		
		
	}
}
  • 실행 결과
대상 이름: data2.txt
사본 이름: data23.txt
카피 되었습니다.

  • 원본 (data2.txt)
  • 복사본 (data23.txt)

5. try - with - resource 에 대하여 설명하시오.

  • try-with-resources는 자바에서 자원을 사용한 후 자동으로 해제해주는 기능을 제공하는 문법. 이를 사용하면 자원을 명시적으로 해제하는 코드를 작성하지 않아도 됨. try-with-resources는 AutoCloseable 인터페이스를 구현한 자원을 사용하며, 자원을 선언한 후에 try 문에 포함. 이를 통해 자원을 안전하게 관리하고 예외 발생 시에도 자원이 자동으로 해제됨.

0개의 댓글