💖 스트림💖
입출력 장치는 다양(파일 디스크/모니터/네트워크 등)
입출력 장치들과 무관하게 프로그램을 구현할 수 있도로그 다양한 가상통로인 스트림 제공.
읽을 대상과 출력할 대상에 따라 각각 다른 스트림 클래스 존재
❣️ 스트림구분 - 입력 / 출력❣️
스트림은 단방향이므로, 입력과 출력 스트림이 나뉘어져 있음
❣️입력 스트림
InputStream / Reader 로 끝남
FileInputStream , FileReader, BufferedInputStream, BufferedReader
❣️출력 스트림
OutputStream / Writer로 끝남
FileOutputStream , FileWriter, BufferedOutputStream, BufferedWriter
❣️ 스트림구분 - 바이트단위 / 문자단위❣️
바이트 단위로 자료이 입출력이 이루어지는 경우가 많으나 자바의 char형은 2바이트이므로 문자를 위한 스트림이 존재함
❣️바이트 단위 스트림
Stream로 끝남
FileInputStream , BufferedInputStream, FileOutputStream, BufferedOutputStream
❣️문자 단위 스트림
Writer / Reader 로 끝남
FileReader, BufferedReader, FileWriter, BufferedWriter
❣️ 스트림구분 - 기반 / 보조❣️
❣️기반 스트림
직접 읽거나 쓰는 기능을 제공함
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 |