CodeGym /Java Blog /சீரற்ற /ஜாவா பிரிண்ட்ஸ்ட்ரீம் வகுப்பு
John Squirrels
நிலை 41
San Francisco

ஜாவா பிரிண்ட்ஸ்ட்ரீம் வகுப்பு

சீரற்ற குழுவில் வெளியிடப்பட்டது
வணக்கம்! இன்று நாம் ஜாவா பிரிண்ட்ஸ்ட்ரீம் வகுப்பு மற்றும் அது செய்யக்கூடிய அனைத்தையும் பற்றி பேசுவோம். உண்மையில், நீங்கள் PrintStream வகுப்பின் இரண்டு முறைகளை ஏற்கனவே அறிந்திருக்கிறீர்கள் . அவை print() மற்றும் println() , நீங்கள் ஒருவேளை தினமும் பயன்படுத்தலாம் :) System.out மாறி ஒரு PrintStream பொருளாக இருப்பதால், நீங்கள் System.out.println() ஐ அழைக்கும்போது இந்த வகுப்பின் முறைகளில் ஒன்றை அழைக்கிறீர்கள் .  PrintStream வகுப்பின் பொதுவான நோக்கம் சில ஸ்ட்ரீம்களுக்கு தகவலை அனுப்புவதாகும். நமக்கு ஏன் PrintStream வகுப்பு தேவை - 1இந்த வகுப்பில் பல கட்டமைப்பாளர்கள் உள்ளனர். மிகவும் பொதுவாகப் பயன்படுத்தப்படும் சில இங்கே:
  • PrintStream(OutputStream outputStream)
  • PrintStream(File outputFile) FileNotFoundExceptionஐ வீசுகிறது
  • PrintStream(ஸ்ட்ரிங் outputFileName) FileNotFoundException ஐ எறிகிறது
எடுத்துக்காட்டாக, அவுட்புட் கோப்பின் பெயரை PrintStream கன்ஸ்ட்ரக்டருக்கு அனுப்பலாம் . மாற்றாக, நாம் ஒரு கோப்பு பொருளை அனுப்பலாம் . இது எவ்வாறு செயல்படுகிறது என்பதைப் பார்க்க சில எடுத்துக்காட்டுகளைப் பார்ப்போம்:

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 என்றால் என்ன என்பதை நீங்கள் மறந்துவிடலாம் , ஆனால் எந்த CodeGym மாணவர்களும் இந்த கட்டமைப்பை மறக்க மாட்டார்கள்:

BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
System.in ( System.out  போன்றது ) என்பது கணினி வகுப்பின் நிலையான மாறியாகும் . ஆனால் System.out போலல்லாமல், இது இன்புட்ஸ்ட்ரீம் என்ற மற்றொரு வகுப்பைக் குறிப்பிடுகிறது . இயல்பாக, 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() ஐப் பயன்படுத்த வேண்டும்.மாறியின் மதிப்பை வெளிப்படையாக அமைக்கும் முறை . அவுட் இல்லாமல் , நீங்கள் நினைவில் கொள்வீர்கள், மாறியின் மதிப்பை நேரடியாக அமைப்பது சாத்தியமில்லை: நாம் setOut() முறையைப் பயன்படுத்த வேண்டியிருந்தது. System.in மாறிக்கு நமது InputStream ஐ ஒதுக்கிய பிறகு , நாம் நமது நோக்கத்தை அடைந்துவிட்டோமா என்பதைச் சரிபார்க்க வேண்டும். எங்கள் பழைய நண்பர் 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