[JAVA] 12 IO / 파일 처리 / 문자열 처리
입출력(IO)은 프로그램과 외부 세계가 데이터를 주고받는 방식이다. 자바에서는 콘솔, 파일, 문자열 처리까지 IO 개념을 통해 다룬다. 이번 글에서는 기본적인 IO 구조와 문자열 처리 방법을 정리한다.
1. IO란
IO(Input / Output)는 데이터의 입력과 출력을 의미한다. 입력은 프로그램 안으로 들어오는 데이터, 출력은 프로그램 밖으로 나가는 데이터다.
- 입력(Input) : 키보드, 파일, 네트워크
- 출력(Output) : 콘솔, 파일, 네트워크
2. 콘솔 입력 (Scanner)
import java.util.Scanner;
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
String text = sc.next();
Scanner는 콘솔 입력을 간단하게 처리할 수 있다. 입력 타입에 따라 메서드가 다르다.
3. 콘솔 출력
System.out.println("출력");
System.out.print("출력");
System.out.printf("값: %d", 10);
println은 줄바꿈, print는 줄바꿈 없음, printf는 형식 지정 출력이다.
4. 파일 입력(FileInputStream)
import java.io.FileInputStream;
import java.io.IOException;
FileInputStream fis = new FileInputStream("test.txt");
int data;
while ((data = fis.read()) != -1) {
System.out.print((char) data);
}
fis.close();
파일에서 바이트 단위로 데이터를 읽는다. read()는 더 이상 읽을 값이 없으면 -1을 반환한다.
5. 파일 출력(FileOutputStream)
import java.io.FileOutputStream;
FileOutputStream fos = new FileOutputStream("out.txt");
fos.write('A');
fos.write('B');
fos.close();
파일이 존재하지 않으면 새로 생성된다.
6. 문자 스트림(FileReader / FileWriter)
import java.io.FileReader;
import java.io.FileWriter;
FileWriter writer = new FileWriter("text.txt");
writer.write("Hello Java");
writer.close();
FileReader reader = new FileReader("text.txt");
int ch;
while ((ch = reader.read()) != -1) {
System.out.print((char) ch);
}
reader.close();
문자 기반 스트림은 문자열 처리에 적합하다.
7. try-with-resources
try (FileReader reader = new FileReader("text.txt")) {
int ch;
while ((ch = reader.read()) != -1) {
System.out.print((char) ch);
}
}
자동으로 자원을 닫아준다. IO 처리 시 권장되는 방식이다.
8. String의 문제점
String s = "A";
s = s + "B";
s = s + "C";
String은 불변 객체이므로, 문자열을 더할 때마다 새로운 객체가 생성된다.
9. StringBuilder
StringBuilder sb = new StringBuilder();
sb.append("A");
sb.append("B");
sb.append("C");
String result = sb.toString();
StringBuilder는 내부 값을 변경할 수 있어 문자열 누적 처리에 효율적이다.
10. StringBuffer
StringBuffer buffer = new StringBuffer();
buffer.append("Java");
StringBuffer는 동기화가 적용된 StringBuilder다. 단일 스레드 환경에서는 StringBuilder가 더 적합하다.
11. IO와 문자열 처리 정리
- IO는 데이터 입출력을 담당한다.
- 파일 IO는 스트림을 통해 처리한다.
- 문자열 누적에는 StringBuilder를 사용한다.
정리
- Scanner로 콘솔 입력을 처리할 수 있다.
- 파일 IO는 예외 처리와 자원 관리가 중요하다.
- String은 불변, StringBuilder는 가변이다.
- IO와 문자열 처리는 자바 기본기의 마무리다.
'Computer Science > Java' 카테고리의 다른 글
| [JAVA] 업캐스팅과 다운캐스팅 (0) | 2026.02.15 |
|---|---|
| [JAVA] 예외가 터지면 코드 흐름은 어떻게 될까 (0) | 2026.02.13 |
| [JAVA] 11 예외 처리(Exception) (0) | 2026.02.13 |
| [JAVA] 09 인터페이스 / 추상 클래스 / 오버라이딩 / 오버로딩 (0) | 2026.02.13 |
| [JAVA] 02 연산자와 형 변환 (0) | 2026.02.01 |