- Java에서의 I/O
Java에서 데이터는 Stream을 통해 입출력된다.
프로그램이 데이터를 입력받을 때에는 InputStream 이라 부르고, 프로그램이 데이터를 보낼 때에는 OutputStream 이라고 부른다.
Stream은 단방향이므로 프로그램이 다른 프로그램과 데이터를 교환하려면 양쪽 모두 InputStream과 OutputStream이 필요하다.
Java의 기본적인 데이터 입출력 API는 java.io 패키지에서 제공하고 있다
Stream은 크게 바이트 단위 I/O인 InputStream/OutputStream, 문자 단위 I/O인 Reader/Writer로 나뉘어 진다.
(바이트 기반 스트림은 그림, 멀티미디어, 문자 등 모든 종류의 데이터를 주고 받을 수 있으나, 문자 기반 스트림은 문자만 주고 받을 수 있도록 특화되어 있다.
FileInputStream, FileOutputStream 이용 파일 복사
바이트 배열의 크기를 8K 정도로 해서 속도 성능 테스트 해본 결과 1K(0.084초)에 비해 10배정도 빨라진 것을 확인 할 수 있었다.
문자 단위 IO인 FileReader와 FileWriter로 테스트해본 결과 속도도 0.078 정도로 오래걸리고.. 물론 FileReader와 Filewriter 각각에 BufferedReader와 BufferedWriter에 연결시켜 속도 향상이 일어나는지 테스트 해봤지만 그다지 빨라지는 것을 확인할 수는 없었다.
게다가 인코딩 문제로 한글과 몇몇 문자가 깨졌다. 이는 별도로 인코딩 방법을 하드코딩 해주어야한다. 어쨌든 그냥 모든 형태의 데이터를 빨아들이고 출력할 수 있는 바이트 단위의 I/O인 InputStream과 OutputStream을 적절히 사용하는 것도 나쁘지 않은 것 같다.
결과