"안녕하세요, Amigo! 오늘 우리는 입력/출력 스트림 에 대해 알게 될 것입니다 . 우리는 며칠 전에 이 주제를 선택했지만 오늘은 철저히 살펴볼 것입니다. 입력/출력 스트림은 4가지 범주로 나뉩니다."

1) 스트림은 방향에 따라 입력 스트림출력 스트림으로 나뉩니다.

2) 스트림은 데이터 유형에 따라 바이트 로 작동하는 스트림과 문자 로 작동하는 스트림으로 나뉩니다 .

여기에서 이러한 구분이 표에 표시됩니다.

입력 스트림 출력 스트림
바이트와 ​​함께 작동 입력 스트림 출력 스트림
캐릭터 작업 리더 작가

개체가 InputStream 인터페이스를 구현하는 경우 해당 개체에서 바이트를 순차적으로 읽는 기능을 지원합니다.

개체가 OutputStream 인터페이스를 구현하는 경우 바이트를 순차적으로 쓰는 기능을 지원합니다.

개체가 Reader 인터페이스를 구현하는 경우 해당 개체에서 문자(문자)를 순차적으로 읽는 기능을 지원합니다.

개체가 Writer 인터페이스를 구현하는 경우 개체에 문자(문자)를 순차적으로 쓰는 기능을 지원합니다.

입력/출력 스트림 - 1

출력 스트림은 프린터와 같습니다. 문서를 프린터로 출력할 수 있습니다. 데이터를 출력 스트림으로 출력할 수 있습니다.

그 부분에서 입력 스트림은 스캐너 또는 전기 콘센트와 비교할 수 있습니다. 스캐너를 사용하면 문서를 컴퓨터로 가져올 수 있습니다. 또는 전기 콘센트에 연결하여 전기를 공급받을 수 있습니다. 입력 스트림에서 데이터를 받을 수 있습니다.

"그들은 어디에 사용됩니까?"

" 이 클래스는 Java의 모든 곳에서 사용됩니다. 친숙한 친구인 System.in은 System 클래스에 이름 이 지정된 정적 InputStream 변수 입니다 ."

"진심이야?! 그래서 지금까지 나는 InputStream을 사용해 왔지만 깨닫지도 못했다. System.out도 스트림인가?"

"예, System.out은 System 클래스의 정적 PrintStream ( OutputStream 의 자손 ) 변수입니다."

"당신은 내가 항상 스트림을 사용하고 있었고 그것을 몰랐다는 것을 의미합니까?"

"예, 이 스트림이 얼마나 편리한지 알 수 있습니다. 하나를 가져와 사용하기만 하면 됩니다."

"하지만 System.in에 대해서는 그렇게 말할 수 없습니다. 우리는 끊임없이 BufferedReader 또는 InputStreamReader를 추가해야 했습니다."

"그렇습니다. 하지만 그럴만한 이유도 있었습니다."

많은 데이터 유형과 다양한 작업 방법이 있습니다. 따라서 표준 I/O 클래스의 수는 모든 작업을 거의 동일한 방식으로 수행했지만 매우 빠르게 증가했습니다. 이러한 복잡성을 피하기 위해 Java 개발자는 추상화 원칙을 사용하고 클래스를 많은 작은 부분으로 나누었습니다.

그러나 필요한 경우 이러한 부분을 일관된 방식으로 연결하고 매우 복잡한 기능을 얻을 수 있습니다. 이 예를 살펴보십시오.

콘솔에 문자열 출력
System.out.println("Hello");
콘솔 출력 스트림을 별도의 변수에 저장합니다.
스트림에 문자열을 출력합니다.
PrintStream console = System.out;
console.println("Hello");
메모리에 동적(확장) 바이트 배열을 만듭니다.
새 출력 스트림(PrintStream 개체)에 연결합니다.
스트림에 문자열을 출력합니다.
ByteArrayOutputStream stream = new ByteArrayOutputStream();
PrintStream console = new PrintStream(stream);
console.println("Hello");

"솔직히 이것은 레고 세트와 같습니다. 다만 이 코드가 무엇을 하는지 명확하지 않습니다."

"지금은 그것에 대해 걱정하지 마십시오. 모든 것은 정해진 시간에 있습니다."

이것이 내가 당신이 기억하기를 원하는 것입니다: 클래스가 OutputStream 인터페이스를 구현한다면, 당신은 그것에 바이트를 쓸 수 있습니다. 콘솔에 데이터를 출력하는 것과 거의 동일합니다. 그것으로 하는 일은 그것의 사업입니다. "레고 키트"를 사용하면 각 개별 부품의 목적에 신경 쓰지 않습니다. 부품 선택의 폭이 넓어 멋진 것을 만들 수 있다는 사실에 관심을 가집니다.

"알았어. 그럼 어디부터 시작하지?"