본문 바로가기

닷컴's_열공/JAVA

아래는 파일에 c:\\adsl.exe 라는 파일을 저장하고,

StringReader 클래스와 StringWriter 클래스는 문자열을 스트림에 기록하거나 읽어낼 사용하는 클래스입니다. , 목표지점이 string형의 데이터가 되는 것입니다. StringReader 클래스와 StringWriter 클래스는 TextReader 클래스와 TextWriter 클래스를 각각 상속받았습니다. StringReader 클래스 Read() 메서드 이용해서 데이터를 읽어들이고, 읽어들인 데이터를 StringWriter Write() 메서드 이용하여 스트림에 기록하게 됩니다. 다음은 클래스의 상속 관계를 나타내는 클래스의 원형을 보여주고 있습니다.

 

StringReader & StringWriter 클래스

q                public class StringReader : TextReader

q                public class StringWriter : TextWriter

q                StringReader 클래스는 string 데이터를 매개변수로 직접 스트림 생성

q                StringWriter 클래스는 스트림에 문자를 기록한다.

 

StringReader 클래스는 Read() 메서드에서 다음 읽을 문자를 나타내기 위해 사용할 있는 내부 카운터를 가지고 있습니다. 이러한 StringReader 클래스의 메서드는 TextReader 클래스의 메서드들을 그대로 재정의하여 사용하고 있습니다. 또한 StringWriter 클래스는 출력스트림으로 사용하기 위해 내부적으로 문자열 버퍼(Buffer) 포함하고 있습니다. 그럼, 예제를 통해 좀더 자세히 알아봅시다.

 

다음 예제는 바이트 코드의 문자열 ‘jabook!’ StringReader 클래스로 읽어 들입니다. 그리고, 그것을 StringWriter 클래스를 사용해 스트림에 입력시킨 화면에 출력하는 간단한 예제입니다.

 

&

StringRWTest.cs

Ü StringReader & StringWriter 사용하는 예제

using System;
using System.IO;

public class
StringRWTest{
 
public static void
Main(){
   
int
ch;
    string str=
"jabook!"
;
    StringReader sr=
new
StringReader(str);
    StringWriter sw=
new
StringWriter();
   
while((ch=sr.Read())!=-1
){
      sw.Write((
char
)ch);
      Console.WriteLine(
"read:["+(char)ch+"]"+",write:["+ sw.ToString() +"]"
);
    }
    Console.WriteLine(
"문자열 출력: "
+sw.ToString());
  }
//main
} //class

C:\C#Example\09>csc StringRWTest.cs

C:\C#Example\09>StringRWTest

read:[j],write:[j]

read:[a],write:[ja]

read:[b],write:[jab]

read:[o],write:[jabo]

read:[o],write:[jaboo]

read:[k],write:[jabook]

read:[!],write:[jabook!]

문자열 출력: jabook!

 

먼저, 문자열 ‘jabook!’ 읽어들이기 위해서, 해당 문자열을 이용하여 StringReader 객체 sr 생성합니다. 그리고, 출력스트림으로 사용할 StringWriter 클래스의 객체 sw 만들어 줍니다.

 

n                 StringReader sr=new StringReader(str);

n                 StringWriter sw=new StringWriter();

 

StringReader 클래스에 입력된 문자열을 읽어들이기 위해 Read() 메서드를 사용합니다. Read() 메서드 문자씩을 읽어 해당 문자값을 반환하고, 이상 읽을 데이터가 없으면 -1 반환합니다. 입력스트림으로부터 읽은 데이터를 StringWriter 기록하기 위해서 Write() 메서드를 사용합니다. 문자열을 읽어들일 문자씩 읽었으며 스트림에 기록할 때에 문자씩 기록하고 있습니다. StringWriter 입력된 문자열을 모두 얻어내기 위해서는 ToString() 메서드를 사용합니다.

 

n                 while((ch=sr.Read()) != -1) {

n                   sw.Write((char)ch);

n                   Console.WriteLine("Read:["+(char)ch+"]"+",Write:["+ sw.ToString() +"]");

n                 }

 

단순히 문자열을 이용해도 되지만 문자열의 사이즈가 경우나 스트림 형식으로 문자열을 다루고자 StringReader StringWriter 사용합니다