본문 바로가기
💾 Backend/자바

💖자바 입출력💖

by 정람지 2023. 6. 30.

💖 스트림💖

입출력 장치는 다양(파일 디스크/모니터/네트워크 등) 

입출력 장치들과 무관하게 프로그램을 구현할 수 있도로그 다양한 가상통로인 스트림 제공.

읽을 대상과 출력할 대상에 따라 각각 다른 스트림 클래스 존재


❣️ 스트림구분 - 입력 / 출력❣️

 

스트림은 단방향이므로, 입력과 출력 스트림이 나뉘어져 있음

 

❣️입력 스트림

InputStream / Reader 로 끝남

FileInputStream , FileReader, BufferedInputStream,  BufferedReader

 

❣️출력 스트림

OutputStream / Writer로 끝남

FileOutputStream , FileWriter, BufferedOutputStream,  BufferedWriter

❣️ 스트림구분 - 바이트단위 / 문자단위❣️

바이트 단위로 자료이 입출력이 이루어지는 경우가 많으나 자바의 char형은 2바이트이므로 문자를 위한 스트림이 존재함

 

 

❣️바이트 단위 스트림

Stream로 끝남

FileInputStream , BufferedInputStream, FileOutputStreamBufferedOutputStream

❣️문자 단위 스트림

 Writer / Reader 로 끝남

 FileReader, BufferedReader, FileWriter,  BufferedWriter
 

💗바이트 단위 스트림/문자 단위 스트림💗

💗 바이트 단위 스트림 💗 ❣️InputStream❣️ 바이트 단위로 읽는 스트림 중 최상위 스트림 하위 스트림 클래스 FileInputStream 파일에서 / 바이트 단위로 / 자료를 읽음 ByteArrayInputStream Byte 배열 메

junggoldchae-coding.tistory.com


❣️ 스트림구분 - 기반 / 보조❣️

❣️기반 스트림

직접 읽거나 쓰는 기능을 제공함

FileInputStream , FileReader, FileOutputStream, FileWriter

❣️보조 스트림

다른 스트림에 부가 기능을 제공함

InputStreamReader , BufferedInputStream, OutputStreamWriter, BufferedOutputStream

💖 표준 입출력💖

콘솔 화면에 입출력되어 콘솔 입출력이라고도 함

- System.out : 표준 출력 스트림
- System.in  : 표준 입력 스트림
- System.err : 표준 오류 출력 스트림
System.in.read(); //한 바이트 읽음

❣️ 그 외 입력 클래스 - Scanner 클래스❣️

문자뿐 아니라 정수, 실수 등 다른 자료형도 읽어올 수 있음.

파일이나 문자열을 생성자의 매개변수로 받아 자료를 읽어 올 수 있음.

Scanner(File source)
Scanner(InputStream source)
Scanner(String source)

다양한 메서드(nextInt,nextLine,next,등등)를 활용할 수 있어서 자주 사용하는 클래스

Scanner scanner = new Scanner(System.in);

String N = scanner.nextLine();

❣️ 그 외 입력 클래스 - Console 클래스❣️

직접 콘솔 창에서 자료를 입력받을 때 사용함

메서드 : readline(), readPassword,reader,writer 등등

Console cs = System.console();

String N = cs.readLine();

❣️ 그 외 입력 클래스 - File 클래스❣️

파일 자체의 경로나 정보를 알 수 있고 파일을 생성할 수도 있음.

File file = new File("경로"); //해당 경로에 File 클래스 생성
file.createNewFile(); //실제 파일 생성

 

❣️ 그 외 입력 클래스 - RandomAccessFile 클래스❣️

파일 입출력을 동시에 할 수 있는 클래스

RandomAccessFile rf = new RandomAccessFile("입출력할파일", 입출력 모드);

💖직렬화💖

인스턴스의 상태는 계속 변화함 

=> 어느 순간 상태를 그대로 저장하거나/ 네트워크를 통해 전송할 일이 있을 수 있음. (직렬화)

=> 저장된 내용이나 전송받은 인스턴스 내용을 복원 (역직렬화)

 

보조 스트림 

- ObjectInputStream / ObjectOutPutStream 사용

 

+ Serializable 인터페이스

직렬화는 인스턴스 내용이 외부로 유출되는 것이므로 "직렬화를 하겠다"는 의도를 Serializable 인터페이스를 상속함으로써 표시.

안하면 오류

 

+ transient 예약어

직렬화 될 수 없는 클래스나 직렬화하고 싶지 않은 변수는 transient 예약어를 씀 => null로 변경

 

+ Externalizable 인터페이스

메서드 구현

'💾 Backend > 자바' 카테고리의 다른 글

💗바이트 단위 스트림/문자 단위 스트림💗  (0) 2023.07.06
💖자바 람다식💖  (0) 2023.06.27
💞Static 정적 멤버💞  (0) 2023.06.10
💞모듈/패키지💞  (0) 2023.06.09
💖자바 내부 클래스💖  (1) 2023.06.02