[JAVA] 입출력 스트림

Gabriela·2023년 8월 2일
0

JAVA

목록 보기
20/24
post-thumbnail

‣ File


java.io.File 클래스

  • 파일, 디렉터리(폴더)를 관리하는 클래스이다.
  • 파일, 디렉터리생성/삭제가 가능하다.
  • 파일, 디렉터리각종 정보(이름, 크기, 최종수정일 등)를 확인할 수 있다.

경로 작성 방법

  • 윈도우 : 백슬래시(\), Java에서 백슬래시 입력하는 방법 (\\)
  • 리눅스 : 슬래시(/)
  • java.io.File 클래스에서는 플랫폼에 따라서 경로 구분자를 자동으로 바꿔주는 separator 필드 값이 있다.

separator 경로 구분자 넣은 디렉터리 선언 & 생성 예시

    // 경로 구분자
    String sep = File.separator;
   
    // File 객체 선언
    File dir;
   
    // File 객체 생성
    dir = new File("C:" + sep + "storage");  // C드라이브 아래에 있는 storage 디렉터리

File 객체 이용해서 파일, 디렉터리 생성 / 삭제

  • 생성
    File 디렉터리명 = new File(디렉터리생성위치);

  • 만들기
    디렉터리명.mkdirs();

  • 삭제
    디렉터리명.delete();


파일, 디렉터리 정보 확인

  • listFiles() : 모든 File 객체를 저장한 File[] 반환
  • getName() : 파일 이름 반환
  • getParent() : 저장된 디렉터리 반환
  • getPaht() : getParent() + getName()
  • lastModified() : 최종수정일long 타입으로 반환
  • length() : 크기long 타입의 바이트 단위로 반환
  • isDirectory() : 디렉터리이면 true 반환
  • isFile() : 파일이면 true 반환

‣ Stream

  • 입력출력이 이루어지는 가상의 연결 통로이다.
  • 키보드, 모니터, 파일, 네트워크 등은 자바 프로그램과 스트림을 통해서 데이터를 주고 받는다.
  • 입력이나 출력 중 하나만 처리할 수 있어서 입력 스트림( InputStream)과 출력 스트림(OutputStream)으로 구분한다
    (입력과 출력을 동시에 할 수 없다.)

‣ OutputStream


java.io.OutputStream 클래스

  • 바이트 기반의 출력스트림이다.
  • 출력 단위
    • int
    • byte[]

(추가 정보) getBytes 사용 시

  • getBytes() : 파라미터 없음 --> 인코딩 필요 X
  • getBytes(파라미터) : 파라미터 있음 --> 개별적 인코딩 O

java.io.BufferedOutputStream 클래스

  • 내부 버퍼를 가지고 있는 출력스트림이다.
  • 많은 데이터를 한 번에 출력하기 때문에 속도 향상을 위해서 사용한다.
  • 보조스트림이므로 메인스트림과 함께 사용한다.

java.io.DataOutputStream 클래스

  • int, double, String 등의 변수를 그대로 출력하는 출력스트림이다.
  • 보조스트림이므로 메인스트림과 함께 사용한다.

java.io.ObjectOutputStream 클래스

  • 객체를 그대로 출력하는 출력스트림이다.
  • 직렬화(Serializable)된 객체를 보낸 수 있다.
  • 보조스트림이므로 메인스트림과 함께 사용한다.

직렬화(Serializable) 처리하기

  • java.io.Serializable 인터페이스를 구현(implements)한다.
  • long serialVersionUID 필드 값을 생성(generate)한다.

활용예시

public class Student implements Serializable {
 
  private static final long serialVersionUID = -988261495718805568L;  // 임의의 랜던값을 자바가 생성하도록 한다.

‣ InputStream


java.io.InputStream 클래스

  • 바이트 기반의 입력스트림이다.
  • 입력단위
    • int
    • byte[]

read() 메소드

  • 1개 데이터를 읽어서 반환한다.
  • 읽은 내용이 없으면 -1을 반환한다.

read(byte[] b) 메소드

  • 파라미터로 전달된 byte[] b에 읽은 내용을 저장한다.
  • 실제로 읽은 바이트 수를 반환한다.
  • 읽은 내용이 없으면 -1을 반환한다.

실제로 읽은 글자 수 저장 도식


java.io.ObjectInputStream 클래스

  • 객체를 그대로 입력 받는 입력스트림이다.
  • 직렬화(Serializable)된 객체를 입력 받을 수 있다.
  • 보조스트림이므로 메인스트림과 함께 사용한다.

‣ Writer


java.io.Writer 클래스

  • 문자 기반의 출력스트림이다.
  • 출력 단위
    • int
    • char[]
    • String

FileWriter 생성 & 추가

  • 생성모드 : 언제나 새로 만든다.(덮어쓰기) new FileWriter(file)
  • 추가모드 : 새로 만들거나, 기존 파일에 추가한다. new FileWriter(file, true)

java.io.BufferedWriter 클래스

  • 내부 버퍼를 가지고 있는 출력스트림이다.
  • 많은 데이터를 한 번에 출력하기 때문에 속도 향상을 위해서 사용한다.
  • 보조스트림이므로 메인스트림과 함께 사용한다.

java.io.PrintWriter 클래스

  • print() 메소드와 println() 메소드를 지원하는 출력스트림이다.
  • println() 메소드를 사용하면 자동으로 줄 바꿈 처리된다.
  • 서버가 클라이언트에게 데이터를 전송할 때 사용하는 기본 Writer이다.

‣ Reader


java.io.Reader 클래스

  • 문자 기반의 입력스트림이다.
  • 입력단위
    • int
    • char[]
    • CharBuffer
    • String

int read(char[] 이름) 메소드

  • 파라미터로 전달된 char[] 이름에 읽은 문자를 저장한다.
  • 실제로 읽은 글자 수를 반환한다.
  • 읽은 문자가 없으면 -1을 반환한다.

String readLine() 메소드

  • 한 줄 전체를 반환한다.
  • 읽은 문자가 없으면 null을 반환한다.

java.io.InputStreamReader 클래스

  • Reader 클래스를 상속 받는 클래스이다. (문자 입력스트림이다.)
  • InputStream(바이트 입력스트림)을 받아서 Reader(문자 입력스트림)으로 변환한다.

‣ try - catch - Resoures


try - catch - resources문

  • 사용한 자원(대표적으로 입출력스트림)을 자동으로 close 해 주는 try문이다.
  • 형식
 try (입출력 스트림 생성) {
     실행 코드
   } catch(Exception e) {
     e.printStackTrace();
   }

👉 활용 예제

깃허브주소(클릭)


자바로 디렉터리 생성/삭제 하는거 너무 신기하고 재밌다
배울수록 별게 다 된다...😊
😎 문제&난수광인천재수업광인과 함께 공부하는 일상.. 재미지다..
코딩.. 재미지다...⭐
나 빼구 다 천재가터.. 👍
ex) 난수광인 & 수업광인


profile
개발이 세상에서 제일 재밌어요

0개의 댓글

관련 채용 정보