Java/Java이론

자바 입출력 스트림(Java I/O Streams)

P_eli 2023. 11. 10. 14:15
728x90
반응형

자바에서 입출력은 프로그램이 데이터를 읽고 쓰는 핵심 부분 중 하나입니다. 입출력 스트림은 데이터의 흐름을 나타내며, 파일, 네트워크, 키보드 등과 같은 다양한 소스 및 대상으로부터 데이터를 읽거나 쓸 수 있게 합니다. 이번 글에서는 자바의 입출력 스트림에 대해 자세히 알아보겠습니다.

입출력 스트림의 기본 개념

입출력 스트림은 데이터를 흐르는 통로로 생각할 수 있습니다. 입출력 스트림은 바이트 기반 스트림과 문자 기반 스트림으로 나뉩니다. 바이트 기반 스트림은 데이터를 바이트 단위로 처리하고, 문자 기반 스트림은 문자를 처리합니다. 각각의 스트림은 추상 클래스 InputStream 및 OutputStream, Reader 및 Writer를 기반으로 합니다.

바이트 기반 스트림

FileInputStream 및 FileOutputStream

파일에서 데이터를 읽거나 쓰는 데 사용됩니다.

// 파일에서 데이터 읽기 예제
try (FileInputStream fis = new FileInputStream("input.txt")) {
    int data;
    while ((data = fis.read()) != -1) {
        System.out.print((char) data);
    }
} catch (IOException e) {
    e.printStackTrace();
}

// 파일에 데이터 쓰기 예제
try (FileOutputStream fos = new FileOutputStream("output.txt")) {
    String data = "Hello, Java I/O Streams!";
    fos.write(data.getBytes());
} catch (IOException e) {
    e.printStackTrace();
}

 

ByteArrayInputStream 및 ByteArrayOutputStream

메모리 상의 바이트 배열에 데이터를 읽거나 쓰는 데 사용됩니다.

// 바이트 배열에서 데이터 읽기 예제
byte[] byteArray = {65, 66, 67, 68, 69}; // ASCII values for A, B, C, D, E
try (ByteArrayInputStream bais = new ByteArrayInputStream(byteArray)) {
    int data;
    while ((data = bais.read()) != -1) {
        System.out.print((char) data);
    }
} catch (IOException e) {
    e.printStackTrace();
}

// 바이트 배열에 데이터 쓰기 예제
try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
    String data = "Hello, Java I/O Streams!";
    baos.write(data.getBytes());
    byte[] result = baos.toByteArray();
    System.out.println(Arrays.toString(result));
} catch (IOException e) {
    e.printStackTrace();
}

 

문자 기반 스트림

FileReader 및 FileWriter

파일에서 문자 데이터를 읽거나 쓰는 데 사용됩니다.

// 파일에서 문자 데이터 읽기 예제
try (FileReader reader = new FileReader("input.txt")) {
    int data;
    while ((data = reader.read()) != -1) {
        System.out.print((char) data);
    }
} catch (IOException e) {
    e.printStackTrace();
}

// 파일에 문자 데이터 쓰기 예제
try (FileWriter writer = new FileWriter("output.txt")) {
    String data = "Hello, Java I/O Streams!";
    writer.write(data);
} catch (IOException e) {
    e.printStackTrace();
}

 

StringReader 및 StringWriter

문자열에서 데이터를 읽거나 쓰는 데 사용됩니다.

// 문자열에서 데이터 읽기 예제
String input = "Java I/O Streams";
try (StringReader reader = new StringReader(input)) {
    int data;
    while ((data = reader.read()) != -1) {
        System.out.print((char) data);
    }
} catch (IOException e) {
    e.printStackTrace();
}

// 문자열에 데이터 쓰기 예제
try (StringWriter writer = new StringWriter()) {
    String data = "Hello, Java I/O Streams!";
    writer.write(data);
    System.out.println(writer.toString());
} catch (IOException e) {
    e.printStackTrace();
}

 

 

728x90
반응형