본문 바로가기
Language/Java

[Java] java 입문 13 - I/O

by 별토끼. 2017. 5. 24.
반응형



[Java] java 입문 13 - I/O


  • Input Output Stream
  •  Stream
  - 스트림은 1차원적인 데이터의 흐름을 의미

  - 이 스트림은 흐름의 방향(입력 스트림, 출력 스트림) 데이터의 형태(문자 스트림, 바이트 스트림)에 따라 나뉜다.

출처: http://blog.eairship.kr/127 [누구나가 다 이해할 수 있는 프로그래밍 첫걸음]


  - 데이터를 메모리에 input하고 저장된 데이터를 output하여 이용한다.


  - 데이터는 사실 확대해보면 2진수로 쪼개어 전송한다.

  - 2진수 8자리를 묶어서 1byte라 하고 데이터 전송은 바이트단위로 한다.

  - 1byte는 256가지를 표현할 수 있다.

  - 1byte가 256가지를 표현할 수 있으므로 2byte로 이루어져있는 유니코드는 총 256x256(=65532)의 문자를 표현할 수 있다.



  • Input
  • InputStream
   - 1byte 처리 스트림
   - 문자의 경우에는 영문자 대소문자, 숫자, 특수 문자  한글자를 읽어들일 
   수 있다.
   - 한글은 처리 불가

  - 키보드로부터 입력 받을 수 있는 객체의 참조값을 받는다.

  - is객체에 입력받은 값을 넣고 InputStream의 메소드인 read()로 입력받은 값을 읽어 keyCode변수에 넣는다.

  - 문자를 캐스팅하여 ch변수에 넣는다.

  - 이 때, 한글은 잘못된 keyCode를 나타낸다. 이를 해결하기 위해 2byte 처리 스트림을 이용한다.

  • InputStreamReader
  - 문자열을 읽어들일 때 사용한다.
  - 2 byte 처리 스트림
  - 한글을 포함한 모든 문자 1글자 처리할 수 있다.

  - InputStream타입으로 생성한 객체를 InputStreamReader 객체를 생성해 넣어준다.

  - 한글을 처리할 수 있게 되었다.

  - read메소드를 이용해 읽어와 캐스팅을 통해 문자로 바꿔서 출력할 수 있다.


  • BufferedReader
  - BufferedReader객체를 이용해 한 줄 단위로 입력값을 읽어들일 수 있다.

  - BufferedReader 클래스에 있는 readLine()메소드로 한 줄을 모두 읽는다.


 - readLine() 메소드를 이용하여 한줄단위로 읽어들인다.


  • Output
  • OutputStream
  - 외부로 데이터를 전송한다.

  - 외부로 데이터를 전송하는 기능 관련 클래스

  - 입력받은 데이터를 wrtie메소드를 이용해 출력할 준비를 한다.

  - flush() 메소드를 이용해 출력한다.


  • OutputStreamWriter
  - 여러개의 문자를 한번에 출력할 수 있도록 하는 클래스이다.

  - osw객체의 타입은 OutputStreamWriter이다.

  - osw객체에 이용할 수 있는 write메소드는 여러개의 문자를 한번에 출력할 수 있도록 한다.


  • File 입출력
  • File Input

 - File에 있는 내용을 입력을 하거나 File의 내용을 출력하는 것을 말한다.

* path가 폴더일 경우

- 경로를 변수에 저장하고 새로 생성하는 파일객체에 경로 변수를 넣어준다.

- file1객체를 이용하여 이용할 수 있는 메소드를 관찰하여 메소드명으로 추측해본다.

- 존재하지 않을 경우 mkdir()메소드로 폴더를 생성한다.

- isDirectory()메소드로 디렉토리인지 판별하고 delete()메소드로 지울 수 있다.


* path가 파일인 경우

- 경로에 파일이 없을 경우 createNewFile()메소드로 새로운 파일을 생성할 수 있다.

- 예외처리를 하지 않으면 오류가 발생한다.


  • File output
 - 이미 기록되어있는 파일 관련 값들을 출력한다.
 - File클래스의 메소드를 활용한다.

- 각 메소드를 활용할 때는 잘 분석해야 이용이 쉽다.

- method의 type을 잘 파악하여 선언한 변수에 넣은 후 출력한다.




반응형

댓글