[ Java I/O에 대한 정리 ]
Q. Java I/O란?
- 데이터 교환을 위한 입출력(Input/Output) 클래스를 일컬음니다. 여기서 말하는 스트림은 데이터의 흐름으로 데이터를 운반하는 연결 통로라 할 수 있습니다. 모든 I/O클래스들은 java.io 패키지를 import하여 사용되어 집니다.
Q. I/O클래스의 종류?
- Stream
- 바이트 단위의 데이터를 읽고 쓰기를 가능하게 해주는 클래스입니다.
1. [Input/Output]Stream: 바이트 단위의 데이터를 읽거나 쓰게 해주는 추상클래스로써 Stream이 붙는 클래스들은 해당 클래스를 상속하게 됩니다.
2. File[Input/Output]Stream: 파일을 바이트 스트림으로 바꿔주는 클래스로써 하드디스크에 저장된 내용을 읽고 쓰게 해주는 클래스 입니다.
3. Buffered[Input/Output]Stream: File Stream과 같이 파일을 읽거나 출력을 할 때 사용되는 클래스로써 파일이 대용량일 때 이점이 있는 클래스 입니다.
- Reader/Writer
- 바이트 단위가 아닌 Char단위로 읽거나 쓰기를 가능하게 해주는 클래스입니다.
1. Reader/Writer: Char 단위의 문자를 읽거나 쓰게 해주는 추상클래스로써 Reader가 붙는 클래스들은 해당 클래스를 상속하게 됩니다.
2. File[Reader/Writer]: 파일을 문자 스트림으로 바꿔주는 클래스로써 하드디스크에 저장된 내용을 읽고 쓰게 해주는 클래스 입니다.
3. Buffered[Reader/Writer]: BufferedReader에는 문자를 읽을 때 readLine()로 한줄씩 해석할 수 있는 기능이 있으며 BufferedWriter에는 문자를 출력할 때 줄을 바꿀 수 있게 해주는 기능들이 있는 클래스입니다.
- 그 외의 클래스
1. console: 명령 창에서 쉽게 읽고 쓸 수 있게 도와주는 클래스입니다.
2. File: 단순히 파일 객체를 생성할 때 사용되어 지는 클래스입니다.
- 이 외에 I/O클래스에 대한 자세한 내용은 아래 참고 사이트에서 참고하시길 바랍니다.
- 참고 사이트 : http://hyeonstorage.tistory.com/250
[ Java I/O 예제 ]
= > 파일 읽고 복사하기
- Stream을 사용하여 이미지 파일을 읽어보고 복사하여 출력하는 것에 대한 예제입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; public class FileIOCopy { public static void main(String[] args) { String filePath = "...\\"; // 파일 경로를 지정 FileInputStream fis = null; // 파일 읽기 스트림 클래스 FileOutputStream fos = null; // 파일 출력 스트림 클래스 try { // 읽을 경로 지정 fis = new FileInputStream(filePath + "a.jpg"); // 읽은 내용을 복사하여 출력할 경로 지정 fos = new FileOutputStream(filePath + "a_copy.jpg"); byte[] byteRead = new byte[1024]; // 바이트 크기를 지정 // 읽어들인 파일의 바이트 길이를 저장 출력 시 .write()의 메소드에 길이를 지정할 때 사용 int len = 0; while((len = fis.read(byteRead)) >= 0) { fos.write(byteRead, 0, len); // 바이트 크기, Offset위치, 길이 지정 } }catch(IOException ioe) { ioe.printStackTrace(); }finally { // 파일 입출력 닫기 try { fos.close(); fis.close(); }catch(Exception e) { e.printStackTrace(); } } } } | cs |
= > 문자를 읽어 콘솔 창에 보여주기
- char단위로 읽어들이기 위해 reader 클래스로 파일을 읽고 콘솔 창에 읽어 들인 결과를 출력하는 내용입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | import java.io.FileReader; import java.io.IOException; public class FileIOReader { public static void main(String[] args) { String filePath = "...\\"; // 파일 경로를 지정 FileReader fr = null; // 파일을 문자로 읽을 클래스 try { fr = new FileReader(filePath + "test.txt"); // 읽을 경로 지정 int read; // char값을 int값으로 저장 String str = ""; // 읽은 char값을 담아둘 String 생성 while(((read = fr.read()) != -1)) { str += (char)read; // 읽은 char값을 String에 저장 } System.out.println(str); } catch(IOException ioe) { ioe.printStackTrace(); } finally { // reader클래스 닫기 try { fr.close(); } catch (Exception e) { e.printStackTrace(); } } } } | cs |
- Text파일을 정상적으로 읽어오고 출력이 되는 것을 확인 할 수 있습니다.
Text Read... Read Complete!! | cs |
- 그 외에 I/O예제 소스 참고 사이트 : http://programmingsummaries.tistory.com/64
'Development > JAVA' 카테고리의 다른 글
[JAVA] 상속, 추상클래스, 인터페이스 (0) | 2016.09.03 |
---|---|
[JAVA] 게시판 예제 - 3 (ArrayList, 기능 분리) (0) | 2016.09.02 |
[JAVA] Collection,Map 정리 (0) | 2016.09.02 |
[JAVA] 게시판 예제 - 2 (배열 복사) (0) | 2016.08.29 |
[JAVA] 게시판 예제 - 1 (배열, Scanner) (0) | 2016.08.24 |