본문 바로가기
개발언어/Java : 자바

자바 쉽게 배우기 22 - 입출력 스트림

by 개발자D 2023. 9. 19.

입출력 스트림

스트림

스트림은 물줄기를 의미합니다. 입출력 스트림 또한 입출력을 위한  흐름을 의미합니다. 데이터는 출발지에서 목적지로 향합니다. 이 향하는 길을 이어주는 것이 입출력 스트림입니다.

 

프로그램이 입력을 받을 때 입력 스트림을, 프로그램에서 출력을 할 때 출력 스트림을 사용합니다. 

 

입출력 스트림은 java.io 패키지에서 사용할 수 있습니다. 스트림은 바이트 단위의 전송이 이뤄지는 바이트 기반 스트림과 문자 단위의 전송이 이뤄지는 문자 기반 스트림으로 구분됩니다. 

 

바이트 기반 스트림

바이트 단위의 데이터 전송이 이뤄지는 스트림입니다. 

입력 : InputStream

바이트 기반 입력 스트림의 최상위 클래스입니다.

 

주요 메서드

메서드 설명
abstract int read () 1byte를 읽고 읽은 byte를 int로 리턴합니다.
int는 4byte의 자료형이기 때문에 리턴값의 마지막 byte에 데이터가 저장됩니다.
int read (byte [] b) 입력 스트림에서 byte 배열 b의 길이만큼 읽어와 읽은 바이트 수를 리턴합니다.
입력 스트림에 byte 배열 b의 길이보다 적은 데이터가 있다면 그만큼을 읽어옵니다.
읽을 수 있는 데이터가 없을 때 -1을 리턴합니다.
int read (byte [] b, int off, int len) read (byte [] b)와 동일하지만 byte 배열 b의 index off번 부터 len 길이만큼을 읽어옵니다. 
void close() 입력 스트림을 닫고 스트림과 관련된 모든 시스템 리소스를 해제합니다.

 

출력 : OutputStream

바이트 기반 출력 스트림의 최상위 클래스입니다.

 

주요 메서드

메서드 설명
abstract void write (int b) int  b의 끝 1 byte를 버퍼로 보냅니다. 
void write (byte [] b) byte 배열 b를 버퍼로 보냅니다. 
void wirte (byte [] b, int off, int len) byte 배열 b의 index off번 부터 len 길이만큼을 버퍼로 보냅니다. 
void flush() 출력 버퍼의 모든 바이트를 출력합니다.
void close() 출력 스트림을 닫고 이 스트림과 관련된 모든 시스템 리소스를 해제합니다.

 

문자 기반 스트림

문자(2 byte) 데이터의 전송이 이뤄지는 스트림입니다.

입력 : Reader

문자 기반 입력 스트림의 최상위 클래스는 Reader입니다.

 

주요 메서드

메서드 설명
int read () 1 문자를 읽고 읽은 문자를 int로 리턴합니다.
int는 4byte의 자료형이기 때문에 리턴값의 마지막 2byte에 데이터가 저장됩니다.
int read (char [] cbuf) 입력 스트림에서 char 배열 cbuf의 길이만큼 읽어와 읽은 바이트 수를 리턴합니다.
입력 스트림에 char 배열 cbuf의 길이보다 적은 데이터가 있다면 그만큼을 읽어옵니다.
읽을 수 있는 데이터가 없을 때 -1을 리턴합니다.
abstract int read (char [] cbuf, int off, int len) read (char [] cbuf)와 동일하지만 char 배열 cbuf의 index off번 부터 len 길이만큼을 읽어옵니다.
void close() 입력 스트림을 닫고 스트림과 관련된 모든 시스템 리소스를 해제합니다.

 

출력 : Writer

문자 기반 출력 스트림의 최상위 클래스는 Writer입니다.

 

주요 메서드

메서드 설명
void write (int c) 문자 c 를 버퍼로 보냅니다. 
void write (char [] cbuf) char 배열 cbuf를 버퍼로 보냅니다.
abstract void wirte (char [] cbuf, int off, int len) char 배열 cbuf의 index off번 부터 len 길이만큼을 버퍼로 보냅니다.
void write (String str) 문자열 str을 버퍼로 보냅니다.
void write (String str, int off, int len) 문자열 str의 index off번 부터 len 길이만큼을 버퍼로 보냅니다.
void flush() 출력 버퍼의 모든 문자를 출력합니다.
void close() 출력 스트림을 닫고 이 스트림과 관련된 모든 시스템 리소스를 해제합니다.

 

보조 스트림

보조 스트림은 직접 입출력하는 스트림은 아니지만 기능 보조를 위해 사용되는 스트림입니다. 입출력 스트림에 붙여 사용합니다.

 

입력 보조 스트림 

바이트 기반 입력 보조 스트림

FilterInputStream, BufferedInputStream, DataInputStream, SequenceInputStream, LineNumberInputStream, ObjectInputStream, PshbackInputStream

문자 기반 입력 보조 스트림

FilterReader, BufferedReader, LineNumberReader, PushbackReader

 

출력 보조 스트림  

바이트 기반 출력 보조 스트림

FilterOutputStream, BufferedOutputStream, DataOutputStream, ObjectOutputStream, PrintStream

 

문자 기반 출력 보조 스트림

FilterWriter, BufferedWriter, PrintWriter 

 


입출력

출력하기

System.out.println() // 출력 후 개행
System.out.print() // 출력

 

입력받기

import java.util.Scanner;

Scanner sc = new Scanner(System.in);
String str = sc.nextLine(); // 문자열로 입력받기
int num = sc.nextInt();	// int형으로 입력받기

 


네트워킹

네트워킹이란 컴퓨터와 컴퓨터를 연결하여 그물망 같은 구조를 갖는 것을 말합니다. java.net 패키지에서 네트워킹 관련 클래스들을 사용할 수 있습니다.

 

IP 주소

IP 주소는 인터넷에 연결된 컴퓨터들을 구분하기 위해 사용되는 값입니다. 255.255.255.255처럼 부호 없는 1byte 정수(0~255) 4개(4byte)를 갖습니다. 

 

URL (Uniform Resource Locator)

URL은 자원에 접근할 수 있는 주소를 형식에 맞춰 표기한 것입니다. 일반적으로 '통신 규약://인터넷 호스트 주소/경로 이름'의 형식을 갖습니다

 

소켓

소켓이란 프로세스 간의 연결을 도와주는 역할을 합니다. 

 


입출력 스트림과 네트워킹 관련 용어들을 한 번 정리해 보았습니다. 이 글로 자바에 대한 설명은 끝이 났습니다. 길다면 길고 짧다면 짧은 22개의 포스팅이었죠? 최대한 쉽게 전해드리려 노력했기에 도움이 되셨으면 좋겠습니다. 저도 정리하고 설명드리는 과정에서 더 배울 수 있었던 것 같습니다. 읽어주셔서 감사합니다! 🙇‍♀️ 다들 즐거운 프로그래밍 하세요😉