Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 어노테이션
- 프레젠테이션 계층
- 비즈니스 계층
- 비동기
- IPC
- Java
- http
- 스프링
- 스프링부트 계층구조
- 토큰기반 인증
- ./gradlew docker
- RESTfull API
- ./gr
- @temproal
- MSA
- ORM
- JWT
- 퍼시스턴스 계층
- 스프링부트 구조
- 스프링부트
- spring
- 작업명중복
- formmatted
- 로그인 인증 흐름
- JPA
- java I/O
- 동기
- 스프링 부트 테스트
- 로그인/로그아웃
- 세션기반 인증
Archives
- Today
- Total
[DEV] J-Jay
Java I/O - 1 본문
728x90
I/O란?
- Input & Output(입출력)
- 입력 : 키보드, 네트워크, 파일
- 출력 : 화면, 네트워크. 파일
Java I/O도 객체
- I/O에서 사용되는 객체는 어떤 대상으로 부터 읽어들여, 어떤 대상에게 쓰는 일을 한다.
Java I/O는 Decorator 패턴
1. Component 인터페이스: Decorator 패턴에서 Component는 데코레이션될 객체와 데코레이터 객체에 공통으로 구현할 메서드를 정의
public interface Component {
public void operation();
}
2. ConcreteComponent 클래스: Component 인터페이스를 구현하는 구체적인 객체
public class ConcreteComponent implements Component {
public void operation() {
System.out.println("ConcreteComponent의 operation() 메서드를 호출합니다.");
}
}
3. Decorator 클래스: Component 인터페이스를 구현하며 데코레이션을 추가할 수 있는 데코레이터 객체
public abstract class Decorator implements Component {
protected Component component;
public Decorator(Component component) {
this.component = component;
}
public void operation() {
component.operation();
}
}
4. ConcreteDecoratorA, B 클래스: Decorator 클래스를 상속하며 추가적인 데코레이션을 제공하는 구체적인 데코레이터 객체
public class ConcreteDecorator extends Decorator {
public ConcreteDecorator(Component component) {
super(component);
}
public void operation() {
super.operation();
addedBehavior();
}
public void addedBehavior() {
System.out.println("ConcreteDecorator 객체에서 추가된 메서드를 호출합니다.");
}
}
5. 위의 클래스를 사용하여 데코레이션 추가
Component component = new ConcreteComponent();
component.operation(); // "ConcreteComponent의 operation() 메서드를 호출합니다." 출력
Component decoratedComponent = new ConcreteDecorator(new ConcreteComponent());
decoratedComponent.operation(); // "ConcreteComponent의 operation() 메서드를 호출합니다."와 "ConcreteDecorator 객체에서 추가된 메서드를 호출합니다." 출력
위의 예제가 어렵다면 단순하게 생각해보자.
ex) 케잌에서의 주인공과 장식(Decorater)은?
주인공: 빵
장식: 생크림, 과일 등
Java I/O에서 주인공과 장식은?
주인공(ConcreateComponent)
- 어떤 대상에게서 읽어들일지, 쓸지를 결정
- 1byte or byte[] 단위로 읽고 쓰는 메소드를 가짐
- 1char or char[] 단위로 읽고 쓰는 메소드를 가짐
장식
- 추상클래스 Component(InputStream, OutputStream, Reader Writer)를 생성자에게서 받아들인다.
→ 생성자에서 위의 4가지를 받아들인다면 전부 장식이다! (중요!) - Decorator 생성자는 Component를 받아들여야 한다.
- 다양한 방식으로 읽고 쓰는 메소드를 가진다.
Java IO의 특수한 객체
- System.in : 표준 입력(InputStream)
- System.out : 표준 출력(PrintStream)
- System.err : 표준 에러 출력(PrintStream)
Java I/O 상속도
xxxStream | byte 단위 입출력 클래스 |
xxxInputStream | byte 단위로 입력을 받는 클래스 |
xxxOutputStream | byte 단위로 출력을 하는 클래스 |
xxxReader | 문자 단위로 입력을 받는 클래스 |
xxxWriter | 문자 단위로 출력을 하는 클래스 |
Filexxx (File Class 제외) | File로부터 입력이나 출력을 하는 클래스 |
ByteArrayxxx | 입력 클래스의 경우 byte 배열로 부터 읽고, 출력 클래스의 경우 클래스 내부의 자료구조에 출력 한 후, 출력된 결과를 byte배열로 반환하는 기능 |
CharArrayxxx | 입력 클래스의 경우 char 배열로부터 읽고, 출력 클래스의 경우 클래스 내부의 자료구조에 출력 한후, 출력된 결과를 char 배열로 반환하는 기능 |
Filterxxx | Filter로 시작하는 입출력 클래스는 직접 사용하는 것 보다는 상속받아 사용 하며, 사용자가 원하는 내용만 필터링할 목적으로 사용 |
Dataxxx | 다양한 데이터 형을 입출력 할 목적으로 사용 특히 기본형 값(int, float, double 등)을 출력하는데 유리 |
Bufferedxxxx | 프로그램에서 Buffer라는 말은 메모리를 의미 입출력 시에 병목현상을 줄이고 싶을 경우 사용 |
RandomAccessFile | 입력이나 출력을 모두 할 수 있는 클래스, 파일에서 임의의 위치의 내용을 읽거나 쓸수 있는 기능을 제공 |
'Back-end > Java' 카테고리의 다른 글
Java 17 주요변화 (0) | 2023.08.31 |
---|---|
Java I/O - 2 (0) | 2023.05.02 |
인터페이스(interface) (0) | 2023.04.30 |
추상(abstract) (0) | 2023.04.30 |
Generic (0) | 2023.04.29 |