"হ্যালো, অ্যামিগো! আজ আমরা কিছু অতি আকর্ষণীয় জিনিস অন্বেষণ করব: কিভাবে System.in ইনপুট স্ট্রীম প্রতিস্থাপন করা যায় ।"

System.in  হল একটি সাধারণ স্ট্যাটিক ইনপুটস্ট্রিম ভেরিয়েবল, কিন্তু আপনি এটিতে একটি নতুন মান নির্ধারণ করতে পারবেন না। কিন্তু আপনি System.setIn() পদ্ধতি ব্যবহার করতে পারেন।

প্রথমত, আমাদের একটি বাফার তৈরি করতে হবে এবং তারপরে কিছু মান রাখতে হবে। তারপরে আমরা এটিকে এমন একটি ক্লাসে মোড়ানো করব যা ইনপুটস্ট্রিম প্রোটোকল ব্যবহার করে বাফার থেকে ডেটা কীভাবে পড়তে হয় তা জানে।

এই এটা দেখায় কিভাবে হয়:

কোড
public static void main(String[] args) throws IOException
{
 //Put data into a string
 StringBuilder sb = new StringBuilder();
 sb.append("Lena").append('\n');
 sb.append("Olya").append('\n');
 sb.append("Anya").append('\n');
 String data = sb.toString();

 //Wrap the string in a ByteArrayInputStream
 InputStream is = new ByteArrayInputStream(data.getBytes());

 //Replace in
 System.setIn(is);

 //Call an ordinary method that doesn't know about our changes
 readAndPrintLine();
}

public static void readAndPrintLine() throws IOException
{
 InputStreamReader isr = new InputStreamReader(System.in);
 BufferedReader reader = new BufferedReader(isr);

 while (true)
 {
  String line = reader.readLine();
  if (line == null) break;
  System.out.println(line);
 }
 reader.close();
 isr.close();
}

"বিলাবো! এটি আমার দেখা সবচেয়ে আকর্ষণীয় উদাহরণ। আমি জানতাম না আপনি এটি করতে পারেন। ধন্যবাদ।"

"আপনাকে স্বাগতম, আমিগো।"