자바에서는 많은 입출력 스트림이 있는데 스트림마다 나름대로의 독특한 특징이 있는

스트림도 있고, 혹은 다른 스트림과 결합해서 상승효과,즉 시너지 효과를 내는 스트림도

있습니다. 

 

메모리에서 읽고 쓰기

 

프로그램을 하다보면 가끔은 메모리에서 읽고, 메모리로 쓰기를 해야할 경우가 있습니다.

어 이게 무슨 소리냐 하겠지요? 메모리에서 읽고, 쓴다는 것이 당황스럽기까지 할지도

모르지만, 자바의 입출력의 기본원칙(뭐가 뭔지 모른다. 다만 스트림에서 읽고, 스트림으로

쓴다)를 생각해 볼 때 읽기 스트림이 메모리에서 만들어지고, 쓰기 스트림이 메모리로 만들

어 졌다면, 그런데로 잘 어울리는 상황일 것입니다.

 

메모리에서 읽고,메모리로 쓰는 대표적인 스트림은 CharArrayReader, CharArrayWriter,

ByteArrayInputStream,ByteArrayOutputStream, StringReader, StringWriter,

StringBufferInputStream등이 있습니다.

주로 메모리로부터 읽기를 할때나 또는 메모리로 쓰기를 해야하는 경우에 사용합니다.

프로그램에서 미리 만들어 사용하고 있는 배열이나,스트링이 갖고 있는 데이터를 읽거나

,혹은 스트림으로 쓰기를 하면 배열이나 스트링으로 데이터가 담기도록 하는 경우입니다.

객체의 배열이나 스트링은 메모리에 살고 있는 친구들이니 메모리로부터 읽고,쓴다고

말하는 것이 맞는 말입니다.

 

 

import java.io.*;

/**

* InputStream중에서 메모리에서 읽고,쓰기 하는 Stream의 기능을 보여줍니다.

*/

public class MemoryInputOutput {

    public static void main(String[] args) throws IOException {

        String s = "Developing EJB 2.0 Components by TULACHAN, 선 마이크로 시스템";

        byte[] b = s.getBytes();        // byte배열

 

                           // byte배열을 스트림으로 읽기를 합니다.

        ByteArrayInputStream bis = new ByteArrayInputStream(b);

        // 스트림의 출구를 byte배열로 합니다.

        ByteArrayOutputStream bos = new ByteArrayOutputStream();

 

        int c = -1;

        while((c = bis.read()) != -1)

            bos.write(c);

       

        System.out.println(bos.toString());

 

                           // char배열을 스트림으로 읽기를 합니다.

        Reader cr = new CharArrayReader(s.toCharArray());

        // 스트림의 출구를 char배열로 합니다.

        CharArrayWriter cw = new CharArrayWriter();

        while((c = cr.read()) != -1)

            cw.write(c);

        System.out.println(cw.toString());

 

                           // 스트링을 스트림으로 읽기를 합니다.

        StringReader sr = new StringReader(s);

        // 스트림의 출구를 스트링으로합니다.

        StringWriter sw = new StringWriter();

        while((c = sr.read()) != -1)

            sw.write(c);

        System.out.println(sw.toString());

    }

}

예제 6 - 6 MemoryInputOutput.java

 

사용자 삽입 이미지

그림 6 - 5 [run MemoryInputOutput]

 

Posted by
,