کلاس StringReader

می دانیم که کلاس های Reader برای خواندن کاراکتر از استریم های کاراکتری به کار می روند ولی همیشه منبع استریم فایل، منبعی در شبکه یا کنسول سیستم نیست گاهی نیاز داریم تا از یک رشته متنی از نوع String به عنوان یک استریم استفاده کنیم ، در چنین شرایطی می توانیم از کلاس StringReader استفاده کنیم. برای استفاده از این کلاس باید از سازنده زیر برای ساخت شی جدید از آن استفاده کنیم :

StringReader (String s)

متد های پر کاربرد StringReader در جدول زیر آمده است:

متد کاربرد
close () جریان ورودی را بسته و منابع استفاده شده را آزاد می کند
read() یک کاراکتر از جریان ورودی خوانده و آن را به صورت یک int بر می گرداند ، در صورتی که به انتهای جریان ورودی رسیده باشیم خروجی این متد مقدار -1 خواهد بود.
read(char [] cbuf,int offset,int length) کاراکتر ها را از جریان ورودی خوانده و در آرایه cbuf ذخیره می کند و تعداد کاراکتر های خوانده شده را بر می گرداند ، در صورتی که کاراکتری برای خواندن وجود نداشته باشد خروجی این متد مقدار -1 خواهد بود.

  • cbuf :آرایه ای است که کاراکتر ها در آن بافر می شوند
  • offset : اندیس شروع نوشتن در آرایه مورد نظر
  • length : حداکثر کاراکتر هایی که باید خوانده شوند
read(char[] cbuf) یک آرایه از کاراکتر ها را از جریان ورودی می خواند.
ready () مشخص می کند که قادر به خواندن از جریان ورودی هستیم یا خیر ، خروجی این متد به صورت true یا false است.
skip(long ns) از ns کاراکتر بعدی در استریم صرف نظر می کند.

در مثال زیر با استفاده از متد read محتوی یک رشته متنی را کاراکتر به کاراکتر خوانده و چاپ می کنیم.

import java.io.*;

public class StringReaderDemo 
{
    public StringReaderDemo() 
    {
        String data = "Hello String Reader!";
        StringReader sr = new StringReader(data);

        int c;
        try 
        {
            while ((c = sr.read()) != -1) 
            {
                System.out.print((char)c);
            }
        }
        catch (IOException e) 
        {
            e.printStackTrace();
        }
    }
    public static void main(String[] args) 
    {
        new StringReaderDemo();
    }
}

ابتدا از روی رشته متنی data یک StringReader جدید ایجاد می کنیم ، سپس در داخل یک حلقه while با استفاده از متد read یک کاراکتر خوانده و آن را در متغیر c ذخیره می کنیم ، اگر مقدار این متغیر برابر با 1- نباشد آن را در خروجی چاپ می کنیم.