Java를 배우면서 가장 먼저 접한 입출력은
Scanner 클래스와 print 메소드이다
자바 API를 배우면서 많이 사용을 한 입출력이다
표준 입출력
InputStream is = System.in;
OutputStream os = System.out;
System.err: 표준 에러 스트림 (콘솔 에러 출력)
자바에서 IO(입력과 출력)은 stream을 통해서 이루어진다.
stream은 빨대와 같다 입력과 출력을 동시에 수행할 수 없어
단일 방향으로만 가능하다
입력과 출력을 동시에 수행하려면
두 개의 stream이 필요하다
그리고 Fist in First Out 방식으로 이루어져 있다
먼저 들어온 데이터가 먼저 나가는 방식이다
stream 종류 :
바이트 스트림 (Byte Stream)
입력 스트림 (Input Stream)
InputStream: 바이트 단위로 데이터를 읽기 위한 최상위 클래스.
- FileInputStream: 파일로부터 바이트 데이터를 읽기 위한 클래스.
- ByteArrayInputStream: 메모리에 있는 바이트 배열로부터 데이터를 읽기 위한 클래스.
- DataInputStream: 기본 데이터 타입 (int, double, boolean 등)을 읽기 위한 클래스
- BufferedInputStream: 입력 성능을 향상시키기 위해 버퍼링 기능을 제공하는 클래스.
- ObjectInputStream: 객체 단위로 데이터를 읽기 위한 클래스. 직렬화된 객체를 읽어올 때 사용.
출력 스트림 (Output Stream)
- OutputStream: 바이트 단위로 데이터를 쓰기 위한 최상위 추상 클래스.
- FileOutputStream: 파일로 바이트 데이터를 쓰기 위한 클래스.
- ByteArrayOutputStream: 메모리에 바이트 배열로 데이터를 쓰기 위한 클래스.
- DataOutputStream: 기본 데이터 타입 (int, float 등)을 쓰기 위한 클래스.
- BufferedOutputStream: 출력 성능을 향상시키기 위해 버퍼링 기능을 제공하는 클래스.
- ObjectOutputStream: 객체 단위로 데이터를 쓰기 위한 클래스. 직렬화된 객체를 저장할 때 사용.
문자 스트림 (Character Stream)
입력 스트림 (Reader)
- Reader: 문자 단위로 데이터를 읽기 위한 최상위 추상 클래스.
- FileReader: 파일로부터 문자 데이터를 읽기 위한 클래스.
- StringReader: 문자열로부터 문자 데이터를 읽기 위한 클래스.
- BufferedReader: 입력 성능을 향상시키기 위해 버퍼링 기능을 제공하는 클래스. readLine() 메소드로 한 줄씩 읽는 기능 제공.
- InputStreamReader: 바이트 스트림을 문자 스트림으로 변환하기 위한 클래스. 인코딩을 지정할 수 있음.
출력 스트림 (Writer)
- Writer: 문자 단위로 데이터를 쓰기 위한 최상위 추상 클래스.
- FileWriter: 파일로 문자 데이터를 쓰기 위한 클래스.
- StringWriter: 메모리에 문자열로 데이터를 쓰기 위한 클래스.
- BufferedWriter: 출력 성능을 향상시키기 위해 버퍼링 기능을 제공하는 클래스.
- OutputStreamWriter: 바이트 스트림을 문자 스트림으로 변환하기 위한 클래스. 인코딩을 지정할 수 있음.
* Buffered 역할 :
Buffered는 보다 빠르고 안정적이게 입출력의 효율성을 높여준다
Buffered를 사용하지 않는 경우에는 데이터가 FIFO 방식대로 하나씩
여러 번 입출력을 하게되는데
Buffered 같은 경우에는 한 번에 여러 개를 읽게된다
쉽게 예를 들면 한 백반집에서는 반찬 5가지가 있고 한 곳에서는 반찬 7가지가
있는 곳이 있다 만일 반찬이 나오는 대로 하나씩 들고가서 손님에게 전해주면
두 식당에서 손님한테 반찬이 온전히 전해지는데는 시간 차이가 있다
하지만 반찬이 나와서 쟁반 위에 각 반찬들을 올려두고 전해주게 된다면
비교적 같은 시간에 전해지게 된다 이때 쟁반 역할을 하는 것이 바로
Buffered 이다
* Buffered는 이처럼 효율적으로 그리고 시간을 줄일 수 있다
import java.io.File;
public class Main {
public static void main(String[] args) {
File f = new File("C:/test.txt");
// 파일 정보를 다루는 클래스이다
File 클래스는 파일 정보를 다루는 클래스이다.
여기서 주의할 점은 파일 정보를 다룬다고 해서 파일이 생성이 되는 게 아니다
System.out.println("> " + f);
// 파일의 경로가 출력이 된다
System.out.println("exists : " + f.exists());
f 객체의 담긴 파일의 경로가 존재한다면 true를 존재하지 않는다면 false를 출력한다
System.out.println("canRead : " + f.canRead());
System.out.println("canWrite : " + f.canWrite());
// 파일을 읽을 권한과 쓰기 권한이 있는 지 확인
'Java' 카테고리의 다른 글
자바 변수부터 콜랙션까지 내용 정리 (0) | 2024.07.10 |
---|---|
자바 Collection List, Set (0) | 2024.07.09 |
클래스, 상속 (0) | 2024.07.06 |
KH 교육과정 제네릭 (0) | 2024.07.04 |
KH 교육과정 JAVA_IO(입출력) (0) | 2024.07.03 |