728x90
반응형
자바의 입출력(Input/Output)은 데이터를 주고받기 위한 기능입니다. 자바에서 I/O 작업을 스트림(Stream)을 사용해 처리하며, 여기서 스트림은 데이터의 일관된 흐름을 의미합니다. 이 글에서는 자바의 입출력에 대해 더 자세히 살펴보고, 예제 코드를 통해 기능을 이해해 보겠습니다.
1. 자바 I/O 스트림의 개념 및 종류
자바에서는 스트림을 이용해 메모리와 파일 등의 장치 사이에 데이터를 주고받습니다. 자바의 스트림에는 크게 네 가지로 구분할 수 있습니다.
- 입력 스트림 (InputStream)
기본 입력 장치에서 incoming 데이터를 읽기 위한 스트림입니다. - 출력 스트림 (OutputStream)
기본 출력 장치로 데이터를 작성하기 위한 스트림입니다. - 문자 스트림 (Reader, Writer)
텍스트 파일로 작업할 때 주로 사용되는 문자 기반 스트림입니다.
2. 자바 I/O 스트림 구현 및 사용
자바 I/O 스트림을 구현하고 사용하기 위해서는 다음과 같은 과정들을 거칩니다.
스트림 생성
스트림을 이용하여 데이터 읽기 및 쓰기
스트림 닫기
예제로 설명하면 아래와 같습니다.
// 파일 입력 예제
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class Main {
public static void main(String[] args) {
try {
FileInputStream fis = new FileInputStream("input.txt");
int i;
while ((i = fis.read()) != -1) {
System.out.print((char) i);
}
fis.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
// 파일 출력 예제
import java.io.FileOutputStream;
import java.io.IOException;
public class Main {
public static void main(String[] args) {
try {
FileOutputStream fos = new FileOutputStream("output.txt");
String data = "Hello, Java I/O!";
byte[] bytes = data.getBytes();
fos.write(bytes);
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
위 예제에서는 'input.txt' 파일을 읽고 데이터를 출력하는 예제와 'output.txt' 파일에 문자열을 작성하는 예제를 보여줍니다.
3. 자바 I/O 스트림 예제
텍스트 파일에서 문자를 읽어 대문자로 변환한 다음 다른 파일에 쓰는 예제를 구현해보겠습니다.
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class Main {
public static void main(String[] args) {
try {
FileReader fr = new FileReader("input.txt");
FileWriter fw = new FileWriter("output.txt");
int i;
while ((i = fr.read()) != -1) {
fw.write(Character.toUpperCase((char) i));
}
fr.close();
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
자바 I/O 스트림을 통해 데이터를 효과적으로 주고받으며, 애플리케이션의 작업을 수행할 수 있습니다. 다양한 스트림을 사용하여 입출력 작업을 적절하게 선택할 수 있어야 합니다.
728x90
반응형
'Programming > Java' 카테고리의 다른 글
자바의 컬렉션 프레임워크 (0) | 2023.08.04 |
---|---|
자바의 예외 처리 (0) | 2023.08.03 |
자바의 내부 클래스 (0) | 2023.08.01 |
자바의 인터페이스 (0) | 2023.07.31 |
자바의 추상 클래스 (0) | 2023.07.30 |