CodeGym /جاوا بلاگ /Random-SD /جاوا پرنٽ اسٽريم ڪلاس
John Squirrels
سطح
San Francisco

جاوا پرنٽ اسٽريم ڪلاس

گروپ ۾ شايع ٿيل
سلام اڄ اسان جاوا پرنٽ اسٽريم ڪلاس بابت ڳالهائينداسين ۽ اهو سڀ ڪجهه ڪري سگهي ٿو. دراصل، توھان اڳ ۾ ئي واقف آھيو ٻن طريقن سان پرنٽ اسٽريم ڪلاس جي. اهي آهن print() ۽ println() ، جيڪي توهان شايد هر روز استعمال ڪندا آهيو :) ڇاڪاڻ ته System.out variable هڪ PrintStream اعتراض آهي، توهان هن طبقي جي طريقن مان هڪ کي سڏي رهيا آهيو جڏهن توهان System.out.println() کي ڪال ڪريو ٿا .  پرنٽ اسٽريم ڪلاس جو عام مقصد ڪجهه اسٽريم تي معلومات موڪلڻ آهي. اسان کي پرنٽ اسٽريم ڪلاس جي ضرورت ڇو آهي - 1ھن طبقي ۾ ڪيترائي ٺاھيندڙ آھن. هتي ڪجھ سڀ کان عام استعمال ٿيل آهن:
  • پرنٽ اسٽريم (آئوٽ پُٽ اسٽريم آئوٽ پُٽ اسٽريم)
  • پرنٽ اسٽريم (فائل آئوٽ پٽ فائل) اڇلائي ٿو FileNotFoundException
  • PrintStream(String outputFileName) اڇلائي ٿو FileNotFoundException
مثال طور، اسان ٻاھرين فائل جو نالو پرنٽ اسٽريم ٺاھيندڙ ڏانھن منتقل ڪري سگھون ٿا. متبادل طور تي، اسان فائل اعتراض پاس ڪري سگھون ٿا. اچو ته ڪجهه مثالن کي ڏسو ته ڏسو ته اهو ڪيئن ڪم ڪري ٿو:
import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintStream;

public class Main {

   public static void main(String arr[]) throws FileNotFoundException
   {
       PrintStream filePrintStream = new PrintStream(new File("C:\\Users\\Username\\Desktop\\test.txt"));

       filePrintStream.println(222);
       filePrintStream.println("Hello world");
       filePrintStream.println(false);

   }
}
هي ڪوڊ ڊيسڪ ٽاپ تي test.txt فائل ٺاهيندو (جيڪڏهن اهو اڳ ۾ ئي موجود نه هجي) ۽ ترتيب وار ان تي اسان جو نمبر، اسٽرنگ ۽ بوليان لکندو. اسان پروگرام کي هلائڻ کان پوءِ هتي فائل مواد آهن:

222 
Hello world!
false
جيئن اسان مٿي چيو آهي، توهان کي فائل اعتراض پاس ڪرڻ جي ضرورت ناهي . اهو ڪافي آهي بس فائل جو رستو ٺاھيندڙ ڏانهن منتقل ڪرڻ لاءِ:
import java.io.FileNotFoundException;
import java.io.PrintStream;

public class Main {

   public static void main(String arr[]) throws FileNotFoundException
   {
       PrintStream filePrintStream = new PrintStream("C:\\Users\\Username\\Desktop\\test.txt");

       filePrintStream.println(222);
       filePrintStream.println("Hello world");
       filePrintStream.println(false);
   }
}
هي ڪوڊ اڳئين ڪوڊ وانگر ساڳيو آهي. هڪ ٻيو دلچسپ طريقو جيڪو اسان جي توجه جي لائق آهي printf() آهي ، جيڪو فارميٽ اسٽرنگ جي بنياد تي پيداوار پيدا ڪري ٿو. هڪ "فارميٽ اسٽرنگ" ڇا آهي؟ مون کي هڪ مثال ڏيان ٿو:
import java.io.IOException;
import java.io.PrintStream;

public class Main {

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

       PrintStream printStream = new PrintStream("C:\\Users\\Steve\\Desktop\\test.txt");

       printStream.println("Hello!");
       printStream.println("I'm a robot!");

       printStream.printf("My name is %s. I am %d!", "Amigo", 18);

       printStream.close();
   }
}
هتي، اسان جي روبوٽ جو نالو ۽ عمر واضح طور تي اسٽرنگ ۾ بيان ڪرڻ بدران، اسان هن معلومات لاءِ جڳه دار رکون ٿا، جن جي نمائندگي %s ۽ %d آهي . ۽ اسان دليلن جي طور تي ڊيٽا پاس ڪندا آهيون جيڪي انهن کي تبديل ڪندا. اسان جي حالت ۾، هي اسٽرنگ آهي " اميگو " ۽ نمبر 18. اسان هڪ ٻيو جڳهه هولڊر ٺاهي سگهون ٿا، چئو %b ، ۽ ٻيو دليل ڏيو. اسان کي هن جي ضرورت ڇو آهي؟ سڀ کان وڌيڪ، وڌيڪ لچڪدار لاء. جيڪڏهن توهان جو پروگرام گهربل آهي ته توهان کي خوش آمديد پيغام ڏيکاري ٿو اڪثر ڪري، توهان کي دستي طور تي هر نئين روبوٽ لاء ضروري متن لکڻو پوندو. توهان هن متن کي مستقل نه ٿا ڪري سگهو، ڇو ته هر ڪنهن جا نالا ۽ عمر مختلف آهن! پر هن نئين طريقي کي استعمال ڪندي، توهان سلام کي مستقل طور تي الڳ ڪري سگهو ٿا ۽، جيڪڏهن ضروري هجي ته، صرف printf() طريقي سان منظور ٿيل دليلن کي تبديل ڪريو .
import java.io.IOException;
import java.io.PrintStream;

public class Main {

   private static final String GREETINGS_MESSAGE = "My name is %s. I am %d!";

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

       PrintStream printStream = new PrintStream("C:\\Users\\Steve\\Desktop\\test.txt");

       printStream.println("Hello!");
       printStream.println("We are robots!");


       printStream.printf(GREETINGS_MESSAGE, "Amigo", 18);
       printStream.printf(GREETINGS_MESSAGE, "R2-D2", 35);
       printStream.printf(GREETINGS_MESSAGE, "C-3PO", 35);

       printStream.close();
   }
}

System.in کي تبديل ڪرڻ

هن سبق ۾، اسان "سسٽم سان وڙهندا" ڪنداسين ۽ سيکارينداسين ته ڪيئن بدلجي System.in متغير سسٽم جي پيداوار کي ريڊائريڪٽ ڪرڻ لاءِ جتي اسان چاهيون ٿا. توهان شايد وساريو ته System.in ڇا آهي، پر ڪو به ڪوڊ گيم شاگرد هن تعمير کي ڪڏهن به نه وساريندو:
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
System.in  (جهڙوڪ System.out ) سسٽم ڪلاس جو هڪ مستحڪم متغير آهي . پر System.out جي برعڪس ، اهو هڪ ٻئي طبقي جو حوالو ڏئي ٿو، يعني InputStream . ڊفالٽ طور، System.in ھڪڙو وهڪرو آھي جيڪو ھڪڙي سسٽم ڊيوائس مان ڊيٽا پڙھندو آھي - ڪيبورڊ. بهرحال، جيئن System.out سان ، اسان ڪيبورڊ کي ڊيٽا جي ماخذ طور تبديل ڪري سگھون ٿا. اسان ڊيٽا پڙهي سگهون ٿا جتان اسان چاهيون ٿا! اچو ته هڪ مثال ڏسو:
import java.io.*;

public class Main {

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

       String greetings = "Hi! My name is Amigo!\nI'm learning Java on the CodeGym website.\nOne day I will become a cool programmer!\n";
       byte[] bytes = greetings.getBytes();

       InputStream inputStream = new ByteArrayInputStream(bytes);

       System.setIn(inputStream);

       BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

       String str;

       while ((str = reader.readLine())!= null) {

           System.out.println(str);
       }

   }
}
پوءِ اسان ڇا ڪيو؟ System.in عام طور تي ڪيبورڊ سان ڳنڍيل آهي. پر اسان ڪيبورڊ مان ڊيٽا پڙهڻ نٿا چاهيون: اچو ته ڊيٽا کي عام اسٽرنگ مان پڙهون! اسان هڪ اسٽرنگ ٺاهي ۽ ان کي بائيٽ صف طور حاصل ڪيو. اسان کي بائيٽ جي ضرورت ڇو آهي؟ شيء اها آهي ته InputStream هڪ خلاصو طبقو آهي، تنهنڪري اسان ان جو هڪ مثال سڌو سنئون نه ٿا ٺاهي سگهون. اسان کي ان جي اولاد مان هڪ کي چونڊڻو پوندو. مثال طور، اسان چونڊي سگھون ٿا ByteArrayInputStream . اهو سادو آهي، ۽ ان جو نالو اڪيلو اسان کي ٻڌائي ٿو ته اهو ڪيئن ڪم ڪري ٿو: ان جي ڊيٽا جو ذريعو هڪ بائيٽ صف آهي. تنهن ڪري اسان هڪ بائيٽ ايري ٺاهي ۽ ان کي اسان جي اسٽريم جي تعمير ڪندڙ ڏانهن منتقل ڪيو جيڪو ڊيٽا کي پڙهي سگهندو. ۽ هاڻي هر شي تيار آهي! هاڻي اسان کي صرف System.setIn() طريقو استعمال ڪرڻ جي ضرورت آهي واضح طور تي متغير جي قيمت مقرر ڪرڻ لاء . out کان سواء ، توهان کي ياد ڪيو ويندو، اهو پڻ ممڪن نه هو ته متغير جي قيمت سڌو سنئون مقرر ڪرڻ: اسان کي استعمال ڪرڻو پوندو setOut() طريقو. اسان جي InputStream کي System.in variable ۾ تفويض ڪرڻ کان پوءِ، اسان چيڪ ڪرڻ چاهيون ٿا ته ڇا اسان پنهنجو مقصد حاصل ڪيو آهي. اسان جو پراڻو دوست BufferedReader هتي اسان جي مدد لاءِ اچي ٿو. عام طور تي، هي ڪوڊ ڪنسول کوليو هوندو IntelliJ IDEA ۾ ۽ پوءِ پڙهو ڊيٽا جيڪو توهان ڪيبورڊ مان داخل ڪيو آهي.
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

       String str;

       while ((str = reader.readLine())!= null) {

           System.out.println(str);
       }
پر ھاڻي جڏھن توھان ان کي هلائيندا، توھان ڏسندا ته اسان جو اسٽرنگ صرف ڪنسول ۾ ڏيکاريل آھي. ڪيبورڊ مان ڪو به پڙهڻ نه آهي. اسان ڊيٽا جو ذريعو تبديل ڪيو. اهو هاڻي ڪي بورڊ ناهي، پر اسان جي تار آهي! اهو بلڪل سادو آهي :) اڄ جي سبق ۾، اسان هڪ نئين ڪلاس جي ڄاڻ حاصل ڪئي ۽ I/O سان ڪم ڪرڻ لاءِ هڪ نئين نئين هيڪ جي ڳولا ڪئي. هاڻي اهو وقت آهي ڪورس ڏانهن موٽڻ ۽ ڪجهه ڪم مڪمل ڪرڻ جو :) توهان کي ايندڙ سبق ۾ ملنداسين!
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION