본문 바로가기

콩's EDUCATION/콩's JAVA

JAVA 수업 2주차 1일

[IO Stream]

--byte stream (binary data를 입출력 수행, 영문데이타, 사운드 데이타, 동영상, 이미지 데이터 처리)

1byte단위...

--character stream(character data를 입출력 수행, 한글, 중국어, 일본어...문자 데이터 처리)

2byte단위...

 

1차스트림=>fiel, 키보드, 메모리, 프로세스..등으로 직접 데이터 입출력 처리

독립적으로 사용할 수 있습니다.

2차 스트림-> buffer, filter 기능을 포함해서 성능을 개선시킨 스트림

독립적으로 사용불가. 생성자를 통해서 1차 스트림을 chaining해서 사용해야 합니다.

 

[File]

물리적 파일을 자바 객체로 추상화

I/O처리 불가

File정보 얻거나, File 생성, file 삭제, Directory 생성, Directory 삭제...

임시파일 생성..

 

2차 보조스트림이 바이트 스트림이면 체이닝되는 1차 기반스트림은 바이트스트림만 가능합니다.

2차 보조스트림이 문자스트림인 경우 체이닝되는 1차 기반스트림은 문자문스트림이 체이닝되어야 함

 

예외1)

PrintWriter(Writer)

PrintWriter(OututStream)

PrintWriter(String)

예외2)

InputStreamReader는 바이트 스트림객체를 생성자의 인자로 받아서

문자 스트림으로 변환해주는

new BufferedReader(new InputStreamReader(System.in))

 

 

객체지향 언어...

객체를 파일에 저장하거나 객체를 네트워크를 통해서 전송 가능해야 합니다.

파일에 저장된 객체를 읽어들이면 자동으로 객체로 복원되어야 하며,

네트워크를 통해서 전송받은 객체도 바로 사용 가능해야 합니다. (RMI, EJB)

 

***객체를 파일에 저장하거나 객체를 네트워크를 통해서 전송하려면 대상 객체는 직렬화해서 파일에 저장하거나 네트워크로 전송해야 합니다.

 

 

class ColorFrame extends Frame{

    Button red, green, blue;

    ColorFrame(){

        setSize(300, 200);

        setLayout(new FlowLayout());

        red = new Button("Red");

        add(red);

        green = new Button("Green");

        add(green);

        blue = new Button("Blue");

        add(blue);

        red.addActionListener(new MyButtonEvent());

        green.addActionListener(new MyButtonEvent());

        blue.addActionListener(new MyButtonEvent());

        

        setVisible(true);

    }

    class MyButtonEvent implements ActionListener{

 

        @Override

        public void actionPerformed(ActionEvent e) {

             Button btn = (Button)e.getSource();

             if(btn==red){

                ColorFrame.this.setBackground(Color.red);

             }else if(btn==green){

                    ColorFrame.this.setBackground(Color.green);

            }else if(btn==blue){

                ColorFrame.this.setBackground(Color.blue);

         }//if end            

        }//actionPerformed() end        

    }//inner class end

}