Archive

Java Day 19 IO - File (2)

|

Java Day 19 IO - File (2)


  1. 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에 출력
    


  2. 객체의 직렬화

    • 객체(객체의 메모리와 객체 정보 등)를 바이트 형태로 변환
    • 객체를 스트림을 이용해서 보관하거나 전송 할 수 있다.
    • 직렬화 가능한 클래스 만들기
      1. Serializable 인터페이스를 상속받는다
      2. 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;
    	}
    }
    


  3. 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) {}
        }
    // 바이트 형태로 작성된 클래스 정보를 읽어와서 그 안의 정보들이 출력된다.
    





참고 자료


이것이자바다

자바프로그래밍100% 실전가이드

KG아이티뱅크 자바 강의자료