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
반응형