[java] 파일 I/O

sesame·2021년 8월 4일
0

Java

목록 보기
24/25

Stream

Input과 Output을 위해 자바에서 제공하는 클래스
모든 스트림은 단방향이라서 입출력을 동시에 수행하려면 2개의 스트림이 필요하다.

바이트 기반 스트림

  • InputStream : 최상위 클래스

    int read(): 스트림에서 1byte 읽어옴, 더 이상 읽을 수 없을 때는 -1 return
    int read(byte[] b): 스트림에서 1byte 읽어와서 byte[]에 저장하고 읽은 수 만큼 return
    int read(byte[] b, int start, int length): 스트림에서 length만큼 읽어와서 byte[start]부터 length까지 저장하고 읽은 수 만큼 return
    void close()

    • FileInputStream(String name)
      name은 파일 시스템의 실제 경로
    • BufferedInputStream
      버퍼를 이용한 입출력
    • DataInputStream
      입출력 스트림으로부터 자바의 기본타입으로 데이터를 읽어오게함
  • OutputStream

    void write(int b): 출력 스트림으로 1byte 전송
    void write(byte[] b): 출력 스트림에 byte[]의 모든 byte보냄
    void write(byte[]b, int start, int length): byte[start]부터 length까지 전송
    void flush(): Buffer에 남은 모든 byte 출력
    close()

    • FileOutputStream(String name[, boolean append])
      boolean append는 true이면 이어서 쓰기, false면 새로 덮어쓰기
    • BufferedOutputStream
    • DataOutputStream
    • PrintStream

문자 기반 스트림

  • Reader

    int read(): 스트림에서 한 개의 문자 읽어옴, 더 이상 읽을 수 없을 때는 -1 return
    int read(char[] c): 스트림에서 문자들 읽어와서 char[]에 저장하고 읽은 수 만큼 return
    int read(char[] b, int start, int length): 스트림에서 length만큼 읽어와서 char[start]부터 length까지 저장하고 읽은 수 만큼 return
    void close()

  • Writer

    void write(int b): 출력 스트림으로 한 개의 문자 전송
    void write(char[] b): 출력 스트림에 char[]의 모든 문자보냄
    void write(char[]b, int start, int length): char[start]부터 length까지 전송
    void write(String str): 문자열 전송
    void write(String str, int start, int length): str의 start부터 length까지 보냄
    void flush(): Buffer에 남은 모든 문자열 출력
    close()



FILE

  • createNewFile()
  • mkdir()
  • mkdirs()
  • delete()
  • can____(): ____할 수 있는 파일인지 여부
  • get____(): ____ 리턴
  • is____(): ____가 맞는지 여부

FileInputStream

파일로부터 byte 단위로 읽을 때 사용
InputStream의 하위 클래스

FileOutputStream

파일을 byte 단위로 저장할 때 사용
OutPutStream의 하위 클래스

  • FileReader
    파일로부터 문자 단위로 읽을 때 사용
    Reader의 하위 클래스

  • FileWriter
    파일을 문자 단위로 저장할 때 사용
    Writer 하위 클래스



보조스트림

실제 데이터를 주고 받을 수 없는 스트림으로 기반 스트림을 생성 후 보조 스트림을 생성하여 스트림의 기능을 향상시키거나 새로운 기능을 추가하기 위해서 사용한다.

InputStreamReader & OutputStreamWriter

문자 변환 보조 스트림

BufferedInputStream/Reader &BufferedOutputStream/Writer

입출력 횟수 줄여 성능 향상 시키는 보조 스트림

DataInputStream & DataOutputStream

기본형의 데이터의 정보를 입출력할 때 사용

ObjectInputStream & ObjectOutputStream

객체 → 역직렬화 → 객체 → 직렬화 → 객체

- 직렬화(implements Serializable)

객체 출력을 위해 객체의 데이터를 byte[]로 변경하는 것
private필드를 포함한 모든 필드를 byte로 변환하지만 static이나 transient 붙은 필드는 직렬화 제외

- 역직렬화

파일에 저장되어 있거나 네트워크에서 전송된 객체를 읽을 수 있는데, 입력 스트림으로부터 읽어들인 연속적인 바이트를 객체로 복원하는 것

0개의 댓글

관련 채용 정보