본문 바로가기

IT/자바

[JAVA] 입출력(I/O) API - 개념, InputStream, OutputStream

[출처] [JAVA] 입출력(I/O) API - 개념, InputStream, OutputStream|작성자 꿈의인생


이번 포스팅은 입출력 API를 알아보자.


간략하게 설명을 하자면 동영상, 이미지, 텍스트 등을 읽고 쓰는데 사용되는 것을 의미한다.

어떤 데이타를 '읽는다'라고 하면 입력(Input)이라고 생각하면 되고 데이터를 '쓴다'라고 하면 출력(Output)이라고 생각하면 된다.


input은 

1.파일 데이터를 '읽는다.'

2.키보드의 데이터를 '읽는다.'

3.네트워크상의 데이터를 '읽는다.'

이 정도로 생각하면 될것 같다.


Output은

1.파일에 데이터를 '쓴다.'

2.모니터에 데이터를 '쓴다.(출력)'

3.네트워크상에 데이터를 '쓴다.(전송)'

이 정도로 생각하면 된다.


API는 InputStream/OutputStream 계열과 Reader/Writer 계열이 있는데

이 두 계열의 차이점은 아래와 같다.



[InputStream/OutputStream 계열]

  • 1byte 단위로 읽고 쓴다.
  • 이미지, 동영상등의 데이터에 주로 사용된다.
  • Reader/Writer 계열보다 월등히 많이 쓰인다.

[Reader/Writer 계열]
  • 2byte 단위로 읽고 쓴다. 
  • 문자열에 주로 사용된다.
 
많이 쓰이는 inputStream과 OutputStream 을 알아보자.

[InputStream] 
  • 추상클래스다.
  • 이 녀석을 상속받은 여러가지 하위 클래스를 자바에서 제공하고 있다.
    - 이것을 이용해 객체를 만들수 있다.
  • 다른 클래스의 메소드에서 반환(리턴)되는 타입 객체를 얻는다.
  • 객체를 생성했다는것은 파일에 연결을 했다는 의미다.
  • 연결이 되면 read() 메소드를 이용해서 데이터를 읽는다.
  • read(), read(byte[]) 두개의 메소드를 이용할 수 있다.
    - read()는 1byte씩 읽는다,(느림)
    - read(byte[])는 Byte[]만큼씩 읽는다.(빠름)
  • 객체를 사용하기 위한 필수 조건은 예외처리를 해야한다는 것이다.
    - try ~ catch 문 이용
  • 사용이 끝나면 연결을 끊는다.
    - close() 메소드를 이용
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package study;
 
import java.io.File;
import java.io.IOException;
import java.util.Date;
 
public class FileEx {
    
    public static void main(String[] args) throws IOException {
 
        File f = new File("C://aaa");
        f.mkdir(); //폴더 만들기
        
        File ff = new File("c://aaab");
        ff.mkdir();// 복수의 폴더 만들기
 
        // 수정일자 변경
        ff.setLastModified(new Date().getTime());
        ff.setReadOnly();
    }
        
}
 
cs



출처: http://hyeonstorage.tistory.com/236 [개발이 하고 싶어요]

① FileInputStream


FileInputStream 클래스는 InputStream 클래스를 상속받은 후손 클래스로 하드 디스크상에 존재하는 파일로부터 바이트 단위의 입력을 받는 클래스이다. 이 클래스는 출발 지점과 도착 지점을 연결하는 통로, 즉 스트림을 생성하는 클래스이다.


생성자의 인자로는 File 객체를 주거나 파일의 이름을 직접 String 형태로 줄 수 있다. 일반적으로 파일의 이름을 String 형태로 주는 경우가 많은데 파일이 존재하지 않을 가능성도 있으므로 Exception 처리를 해야 한다.




'IT > 자바' 카테고리의 다른 글

String.valueOf(), String.format()  (0) 2018.05.29
BufferedReader  (0) 2018.05.28
다형성  (0) 2018.05.27
네트워크 관련 Java 소스 설명 부탁드립니다.  (0) 2018.05.25
자바(Java)의 기초 박살내기 - Java GUI③  (0) 2018.05.24