JAVA

30. 자바IO (1) - 정의, byte 단위 입출력

웹꽃기사 2021. 3. 30. 09:44

1) 입출력을 위한 인터페이스와 클래스들

  • 자바 IO는 크게 byte단위 입출력과 문자 단위 입출력클래스로 나뉩니다.
    • byte단위 입출력클래스는 모두 InputStream과 OutputStream이라는 추상클래스를 상속받아 만들어집니다.
    • 문자(char)단위 입출력클래스는 모두 Reader와 Writer라는 추상클래스를 상속받아 만들어집니다.
  • 4가지 추상클래스(InputStream,OutputStreamReader,Reader,Writer)를 받아들이는 생성자가 있다면, 다양한 입출력방법을 제공하는 클래스입니다.
  • 4가지 클래스를 받아들이는 생성자가 없다면, 어디로부터 입력받을 것인지, 어디에 쓸것인지를 나타내는 클래스입니다.
  • 파일로 부터 입력받고 쓰기 위한 클래스 : FileInputStream, FileOutputStream, FileReader, FileWriter
  • 배열로 부터 입력받고 쓰기 위한 클래스 : ByteArrayInputStream, ByteArrayOutputStream, CharReader, CharWriter
    • 해당 클래스들은 어디로부터, 어디에라는 대상을 지정할 수 있는 IO클래스입니다. 이런 클래스를 장식대상 클래스라고 합니다.
  • DataInputStream, DataOutputStream같은 클래스를 보면 다양한 데이터 형을 입력받고 출력합니다.
  • PrintWriter는 다양하게 한줄 출력하는 pintln()메소드를 가지고있습니다.
  • BufferedReader는 한줄 입력받는 readLine()메소드를 가집니다.
    • 이런 클래스들은 다양한 방식으로 입력하고, 출력하는 기능을 제공합니다. 이런 클래스를 장식하는 클래스라고 합니다.

 

2) Byte 단위 입출력

Byte단위 입출력 클래스는 클래스의 이름이 InputStream이나 OutputStream으로 끝납니다.

  • 파일로 부터 1byte씩 읽어들여 파일에 1byte씩 저장하는 프로그램을 작성
    • 파일로 부터 읽어오기 위한 객체 - FileInputStream
    • 파일에 쓸수 있게 해주는 객체 - FileOutputStream .
  • read()메소드가
    • byte를 리턴한다면 끝을 나타내는 값을 표현할 수가 없기 때문에, byte가 아닌 int를 리턴한다.
    • 음수의 경우 맨 좌측 비트가 1이 된다. 읽어들일 것이 있다면 항상 양수를 리턴한다고볼 수 있다. .
  • FileInputStream과 FileOutputStream을 이용하여, 1바이트씩 읽어들여 1바이트씩 저장
    • read()메소드가 리턴하는 타입은 정수인데, 정수 4바이트중 마지막 바이트에 읽어들인 1바이트를 저장한다.
    • read()메소드는 더이상 읽어들일 것이 없을때 -1을 리턴한다.

 

 

3) Byte 단위 입출력 심화

Byte단위 입출력 클래스는 클래스의 이름이 InputStream이나 OutputStream으로 끝납니다.

  • 파일로 부터 512byte씩 읽어들여 파일에 512byte씩 저장하는 프로그램을 작성
    • byte[] buffer = new byte[512];
    • 512byte만큼 읽어 들이기 위해 byte배열을 사용

  • System.currentTimeMillis();
    • 현재 시간을 롱타입으로 반환한다.

'JAVA' 카테고리의 다른 글

32. 자바 IO (3) - Char 단위 입출력  (0) 2021.03.30
31. 자바 IO (2) - 다양한 타입의 입출력  (0) 2021.03.30
29. 컬렉션 프레임워크 (2) - Set, List, Map  (0) 2021.03.29
28. Generic  (0) 2021.03.29
27. 컬렉션 프레임 워크 (1)  (1) 2021.03.29