- 입출력 API [InputStream,OutputStream]

 

 

InputStream, OutputStream이 월등히 많이 쓰인다.


1. InputStream사용법


1) InputStream(추상)클래스를 이용해서 객체를 만든다. 또는 다른 클래스의 메소드에서 반환되는 타입 객체를 얻는다.

2) read() 메소드를 이용해서 데이터를 읽는다.
3) read(), read(byte[]) 두 개의 메소드를 이용할 수 있다.

read() - 1byte 씩 읽는다. 속도가 느리다. 
read(byte[]) - byte[] 만큼씩 읽는다. 속도가 빠르다.

InputStream 하위에는 
FileInputStream
ByteArrayInputStream
ObjectInputStream
등등 있음.

 

 

 

2. OutputStream 사용법


1) OutputStream(추상)클래스를 이용해서 객체를 만든다. 또는 다른 클래스의 메소드에서 반환되는 타입 객체를 얻는다.
2) write() 메소드를 이용해서 데이터를 읽는다.
3) write(), write(byte[]), write(byte[], int, int)세 개의 메소드를 이용할 수 있다.
4) write(byte[], int, int)는 데이터를 원하는 위치에서 원하는 숫자만큼 쓸 수 있다.

 

 

 

3. 예외처리와 무조건 close() 실행

 


1) I/O를 하면서 반드시 해야 하는 예외처리가 있다. IOException이다. (위 예제에서는 Exception으로 함. 얘는 모든 예외가 다 타는 놈이니까 가능.)
2) I/O작업 마지막은 close()로 외부연결을 끝내야 한다.

 

다음과 같이 finally문은 cath문이 실행되도 무조건 실행되는 부분이기 때문에 finally 안에서
os 객체가 더이상 null이 아니면 os.close()메소드를 실행해준다.
이때도 역시나, I/O관련 작업이기 때문에 try~ catch문 필수 !

 

 

4. FileInputStream과 FileOutputStream을 이용한 파일 복사.

 

5. DataInputStream, DataOutputStream > 문자열 읽고, 쓰기

byte단위로 문자열을 처리하는 InputStream, OutputStream보다 편리하게 고안된 클래스이다.
DataInputStream의 readUTF()메소드를 이용하면 byte씩 읽어올 필요 없이 한번이 읽어올 수 있다.

 

파일 업로드 시 파일명 가져올 때 FilenameUtils

String filleName ="javain.txt";


String extension = FilenameUtils.getExtension(fileName); // txt
String fileName = FilenameUtils.getBaseName(fileName); // javain
String fileName = FilenameUtils.getName(fileName); // javain.txt

 

 

+ Recent posts