[ 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

+ Recent posts