열심히 끝까지

45강 입출력 / 자바의 IO 패키지 본문

멘토씨리즈 JAVA

45강 입출력 / 자바의 IO 패키지

노유림 2022. 5. 11. 21:33

45-1 ) IO와 스트림(Stream)
1) IO?
Input(입력), Output(출력)

입력 : 프로그램에 데이터가 들어오는 것
출력 : 프로그램에 데이터가 나가는 것

2) 스트림?
데이터의 흐름
흐름이 정해지면 그 방향으로 간다

키보드, 파일[입력스트림] ---> 프로그램 ---> 모니터, 파일[출력스트림]

스트림의 특징
단 방향이다.
- FIFO(First In First Out) 구조를 갖고 있다.
- 출력단위에 따라 바이트 기반과 문자단위로 분류된다.
       > 출력 단위
              1byte -> 바이트 기반 스트림
              문자  -> 문자 기반 스트림



45-2 ) 바이트 기반 스트림
바이트 기반 스트림?
       : 바이트 단위로 데이터를 입출력하는 스트림

[1] 바이트 기반 스트림의 활용
           InputStream(읽기)                            OutputStream(쓰기)
       abstract int read()                            abstract void write(int b)
       int read(byte[] b)                             void write(byte[] b)
       int read(byte[] b, int off, int len)         void write(byte[] b, int off, int len)

-> 입력과 출력에 따라, read() 와 write()를 구현하여 사용한다.


       입력스트림                     출력스트림                     대상
    FileInputStream              FileOutputStream                 파일
   PipedInputStream          PipedOutputStream              메모리
   AudioInputStream         AudioOutputStream              오디오
 ByteArrayInputStream    ByteArrayOutputStream           프로세스

-> 데이터를 읽거나 쓰는 대상에 따라서 적절한 스트림을 사용한다.

ex) 파일 입출력
FileInputStream fis = null;
fis = new FileInputStream("파일위치");
fis.read();

45-3 ) 바이트 기반 보조 스트림
바이트 기반 보조 스트림?
       : 실제 바이트 기반 스트림의 성능을 향상시키는 역할

[1] 바이트 기반 보조스트림의 활용
       입력보조스트림              출력보조스트림                     사용
      FilterInputStream           FilterOutputStream         필터를 이용한 입출력
    BufferedInputStream      BufferedOutputStream        버퍼를 통한 입출력
       DataInputStream           DataOutputStream       기본 단위로 데이터 처리
                 X                          PrintStream             print, printf, println 사용

ex) BufferedInputStream 활용
FileInputStream fis = null;
fis = new FileInputStream("파일 위치");
BufferedInputStream bis = new BufferedInputStream(fis);

<실습>File01
바이트 기반 스트림과 보조스트림을 이용하여 파일을 복사하는 코드 작성하기
-txt 파일 제작법
--> 파일을 사용할 project -> new -> file

제작 전
제작 후



FileInputStream <= prac.txt
입력받은 값을 FileOutputStream통해 result.txt로 출력

'멘토씨리즈 JAVA' 카테고리의 다른 글

47강 Java GUI Programming  (0) 2022.05.12
46강 입출력 / 자바의 IO 패키지  (0) 2022.05.11
44강 스레드3  (0) 2022.05.10
43강 스레드2  (0) 2022.05.10
42강 스레드1  (0) 2022.05.10