Java Day 19 IO - File (2)
04 Jan 2021 | JavaJava Day 19 IO - File (2)
-
Scanner Class
- java.util 패키지로 엄밀히 따지면 IO는 아니다.
- 입력 값(문자열, 파일, 입력 스트림)을 정규 표현식으로 구분하여 문자열이나 기본 데이터 타입으로 토큰 할 수 있는 클래스. 정규 표현식은 언어를 표현 할 수 있는 문자식.
- 생성자
- 메소드
//main 메소드 생략 System.out.print("입력 : "); Scanner scan = new Scanner(System.in); int number = scan.nextInt(); System.out.printf("스캔 : %d", number); scan.close(); // 사용 후 닫아주어야함 //숫자를 입력받아 console에 출력
-
객체의 직렬화
- 객체(객체의 메모리와 객체 정보 등)를 바이트 형태로 변환
- 객체를 스트림을 이용해서 보관하거나 전송 할 수 있다.
- 직렬화 가능한 클래스 만들기
- Serializable 인터페이스를 상속받는다
- Externalizable 인터페이스를 상속받는다
import java.io.Serializable; public class Data implements Serializable { private static final long serialVersionUID = 1L; private int No; private String name; private String mail; public int getNo() { return No; } public void setNo(int no) { No = no; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getMail() { return mail; } public void setMail(String mail) { this.mail = mail; } }
-
ObjectStream
- ObjectOutputStream : 객체를 직렬화하는 메소드를 제공해주는 스트림, writeObject()
- ObjectInputStream : 객체를 역직렬화하는 메소드를 제공해주는 스트림, readObject()
//main 메소드 생략 ObjectOutputStream oos = null; try { oos = new ObjectOutputStream(new FileOutputStream("C:\\myProject\\obj.txt")); Data data = new Data(); data.setNo(33); data.setName("홍길동"); data.setMail("hong@gmail.com"); oos.writeObject(data); } catch(FileNotFoundException e) { e.printStackTrace(); } catch(IOException e) { e.printStackTrace(); } finally { try { if(oos!=null) oos.close(); } catch(IOException e) {} } // c:/myProject/obj.txt 파일에 클래스 정보가 바이트로 전환되어 작성되어있다
//main 메소드 생략 ObjectInputStream ois = null; try { ois = new ObjectInputStream(new FileInputStream("C:/myProject/obj.txt")); Data data = (Data)ois.readObject(); System.out.println("번호 : " + data.getNo()); System.out.println("이름 : " + data.getName()); System.out.println("메일 : " + data.getMail()); } catch(ClassNotFoundException e) { e.printStackTrace(); } catch(FileNotFoundException e) { e.printStackTrace(); } catch(IOException e) { e.printStackTrace(); } finally { try { if(ois != null) ois.close();} catch(IOException e) {} } // 바이트 형태로 작성된 클래스 정보를 읽어와서 그 안의 정보들이 출력된다.
참고 자료
KG아이티뱅크 자바 강의자료