자바I/O 열두번째날 - I/O

황제낙엽 2003.04.15 10:41 조회 수 : 285 추천:155

sitelink1  
sitelink2  
sitelink3  
sitelink4  
sitelink5  
sitelink6  
41. I/O



1) Input/Output 스트림 클래스

InputStream ─┌ FileInputStream
                     ├ PipedInputStream               ┌ LineNumberInputStream
                     ├ FilterInputStream ─────├ DataInputStream
                     ├ ByteArrayInputStream         ├ BufferedInputStream
                     ├ SequenceInputStream         └ PushbackInputStream
                     ├ StringBufferInputStream
                     └ ObjectInputStream
        
OutputStream ─┌ FileOutputStream
                       ├ PipedOutputStream            ┌ DataOutputStream  
                       ├ FilterOutputStream ────├ BufferedOutputStream
                       ├ ByteArrayOutputStream      └ PushbackOutputStream
                       └ ObjectOutputStream


2) Reader/Writer 클래스

Reader ─┌ BufferedReader     ─ LineNumberReader
             ├ CharArrayReader
             ├ InputStreamReader  ─ FileReader
             ├ filterReader       ─ PushbackReader
             ├ PipedReader
             └ StringReader

Writer ─┌ BufferedWriter
            ├ CharArrayWriter
            ├ OutputStreamWriter ─ FileWriter
            ├ FilterWriter
            ├ PipedWriter
            ├ StringWriter
            └ PrintWriter

3) File, RandomAccessFile클래스
   File클래스는 파일과 관련된 정보를 나타내는데 주로 사용되고, RandomAccessFile클래스는 실제 파일에 데이터를 읽고 쓰는데 주로
   사용된다.
   RandomAccessFile클래스의 모드는 "r"이나 "rw"이다.

4) nodestream 과 filterstream
   nodestream은 텍스트파일과 같은 1차적인 stream데이터를 처리하는 클래스이다.
   filterstream은 이렇게 생성된 nodestream의 객체를 보다 고급스럽게 처리할 수 있는 클래스이다.
  

5) 자바에서의 한글 I/O
   InputStream, OutputStream은 일반적으로 byte단위의 I/O를 한다. 그러나 한글같은 경우 byte 단위로 I/O하게되면 글자 자체가 깨질 위험이 있다. 다 아시겠지만 한글은 2 byte이다. 따라서 Java에서는 문자나 문자열을 다룰 때 16bit-Unicode방식을 제공한다. I/O할 때 이렇게 16bit-Unicode를 사용하는 I/O class들을 readers, wirters라고 부른다.



6) I/O클래스의 사용예

- InputStream/OutputStream
    => DataInputStream dis = new DataInputStream(new FileInputStream("sample.txt"));
    => String path = "C:oracleadminjx239pfileinit.ora";
          BufferedReader br = new BufferedReader(new FileReader(new File(path)));
        
- Reader/Writer
    => BufferedReader br = new BufferedReader(new FileReader("sample.txt"));
- RandomAccessFile
    => RandomAccessFile raf = new RandomAccessFile("sample.txt","rw"));

- FileOutputStream(string, boolean)생성자에서 string은 file name을 나타내고, boolean이 true이면 데이터가 파일의 맨마지막에 기록된다.


오늘의 예제 :: [12]



42. I/O 와 java.net

오늘의 예제 :: [13]"