எடுத்துக்காட்டு 01
எங்கள் கட்டுரையின் முதல் உதாரணத்தைத் தொடங்கி, 'test.java' என்ற புதிய ஜாவா கோப்பை உருவாக்கி வருகிறோம். அதன் பிறகு, அதே கோப்புறையில் ஒரு உரை கோப்பையும் உருவாக்கினோம்.
ஜாவா நிரலில் உள்ளீட்டு ஸ்ட்ரீமின் பொருள்களைப் படிக்க, வெளியீட்டு ஸ்ட்ரீமை இறக்குமதி செய்ய வேண்டும். எனவே, நாங்கள் தொடக்கத்தில் 'java.io.ObjectInputStream' மற்றும் 'java.io.ObjectOutputStream' தொகுப்புகளை இறக்குமதி செய்து வருகிறோம். அதனுடன், ஒரு கோப்பில் தரவைச் செருக, நாம் 'java.io.FileInputStream' மற்றும் 'java.io.FileInputStream' ஆகியவற்றை இறக்குமதி செய்ய வேண்டும். ஒற்றை முக்கிய() செயல்பாட்டைக் கொண்ட 'முதன்மை' வகுப்பை உருவாக்கியுள்ளோம்.
செயல்பாடு செயல்படுத்தல் ஒரு முழு எண் மாறி 'd' அறிவிப்பிலிருந்து தொடங்குகிறது. பிழைகள் காரணமாக நிரல் திடீரென வெளியேறுவதைத் தவிர்க்க, ஜாவாவின் முயற்சி-பிடிப்பு அறிக்கையைச் சேர்த்துள்ளோம். 'முயற்சி' பகுதியானது FileOutputStream வகுப்பு வழியாக 'f' என்ற கோப்பு வெளியீட்டு ஸ்ட்ரீம் பொருளின் துவக்கத்துடன் தொடங்குகிறது. 'f' என்ற பொருளுக்கு 'new.txt' என்ற கோப்பின் பெயரை அனுப்பியுள்ளோம். 'o' என்ற ஆப்ஜெக்ட் அவுட்புட் ஸ்ட்ரீமை உருவாக்கி, ஒரு கோப்பை அவுட்புட் ஸ்ட்ரீமாக மாற்ற, 'f' என்ற கோப்பு பொருளை ObjectOutputStream வகுப்பிற்கு அனுப்பியுள்ளோம்.
அடுத்த வரியில், ஜாவா அவுட்புட் ஸ்ட்ரீமின் ரைட்இன்ட்() செயல்பாட்டை அவுட்புட் ஸ்ட்ரீம் ஆப்ஜெக்ட் “ஓ” வழியாக ஒரு முழு எண் மாறி “டி” ஐ அனுப்ப, அதாவது கோப்பில் சேமிக்க அழைக்கிறோம். வரி 12 இல், 'new.txt' என்ற கோப்பை அனுப்புவதன் மூலம் ஜாவாவின் FileInputStream வகுப்பைப் பயன்படுத்தி 'fs' என்ற கோப்பு உள்ளீட்டு ஸ்ட்ரீமை உருவாக்கியுள்ளோம், அதாவது, அதில் ஏற்கனவே தரவு உள்ளது. இந்த கோப்பு உள்ளீட்டு ஸ்ட்ரீம் ஆப்ஜெக்ட் 'fs' ஆனது, கோப்பு ஸ்ட்ரீமில் இருந்து வாசிப்பை இயக்க, ObjectInputStream வகுப்பின் புதிதாக உருவாக்கப்பட்ட ஆப்ஜெக்ட் 'os' க்கு அனுப்பப்பட்டது. java இன் “System.out” தொகுப்பிலிருந்து println() செயல்பாடானது, new.txt கோப்பிலிருந்து தரவைக் காண்பிக்க, ஆப்ஜெக்ட் இன்புட் ஸ்ட்ரீம் ஆப்ஜெக்ட் “os” வழியாக readInt() செயல்பாட்டை அழைக்க castoff செய்யப்பட்டது. அதன் பிறகு, ஜாவாவில் கோப்பு கையாளுதலின் 'மூடு' செயல்பாட்டைப் பயன்படுத்தி, அந்தந்த பொருள்களான “o” மற்றும் “os” ஐப் பயன்படுத்தி வெளியீட்டு ஸ்ட்ரீம் மற்றும் உள்ளீட்டு ஸ்ட்ரீமை மூடுகிறோம். ஸ்ட்ரீம்களை மூடுவதற்கு இது ஒரு அவசியமான படியாகும், இதனால் வேறு எந்த பயனரும் ஒரு கோப்பிலிருந்து தரவை உள்ளிடவோ அல்லது வெளியிடவோ முடியாது. கேட்ச்() கூற்றுக்குள், நாங்கள் getStackTrace() செயல்பாட்டைப் பயன்படுத்தி பிழையைப் பெறவும், விதிவிலக்கு மாறி “e” வழியாக திரையில் காண்பிக்கவும். இந்த நிரல் ஷெல்லில் செயல்படுத்த தயாராக உள்ளது.
எங்கள் ஜாவா கோட் கோப்பை செயல்படுத்துவதற்கு முன்பு சேமித்து, 'test.java' கோப்பை இயக்க ஜாவா முக்கிய வழிமுறைகளைப் பயன்படுத்தினோம். அது பதிலுக்கு எதையும் திருப்பித் தருவதில்லை. மேலும், 'new.txt' என்ற உரைக் கோப்பின் தரவை ஷெல்லில் 'பூனை' அறிவுறுத்தலைப் பயன்படுத்தி காட்டுவது குப்பை மதிப்பைக் காட்டுகிறது. ஏனென்றால், பெரும்பாலான நேரங்களில், java executor ஆல் கோப்பிலிருந்து முழு எண் மதிப்பைப் படிக்க முடியாது. ஆனால் பெரும்பாலும், இது சரியான முழு எண்ணைக் காண்பிக்கும்.
new.txt கோப்பை கைமுறையாகத் திறப்பதன் மூலம் அதைச் சரிபார்த்தபோது, கோப்பில் மதிப்பின் யூனிகோட் வடிவம் காட்டப்பட்டிருப்பதைக் கண்டோம்.
கோப்பு ஸ்ட்ரீமில் இருந்து முழு எண் மதிப்பை உங்களால் காட்ட முடியவில்லை என்றால், 'o' என்ற பொருளின் வழியாக கோப்பு ஸ்ட்ரீமில் 'd' மதிப்பை எழுத, writeInt() செயல்பாட்டிற்கு பதிலாக java நிரலில் writeObject() செயல்பாட்டைப் பயன்படுத்தலாம். காட்டப்படும். அதனுடன், கோப்பு உள்ளீட்டு ஸ்ட்ரீமில் இருந்து தரவைக் காண்பிக்க, readInt() செயல்பாட்டிற்குப் பதிலாக, “readObject()” செயல்பாட்டை நீக்க வேண்டும்.
இந்தக் குறியீட்டைப் புதுப்பிப்பது, செயல்பாட்டின் போது முழு எண் மதிப்பைக் காண்பிக்கும்.
எடுத்துக்காட்டு 02
சரம் வகை மதிப்புக்கான ஆப்ஜெக்ட் உள்ளீட்டு ஸ்ட்ரீமை வெளியேற்ற ஜாவா நிரலாக்கத்தின் மற்றொரு மதிப்பைப் பெறுவோம். எனவே, ஜாவா நூலகத்தின் 'io' தொகுப்பிலிருந்து ஜாவாவின் அதே FileInputStream, FileOutputStream, ObjectInputStream மற்றும் ObjectOutputStream வகுப்புகளின் இறக்குமதியுடன் இந்த உதாரணக் குறியீட்டைத் தொடங்கியுள்ளோம். இந்த குறியீட்டை இயக்கத் தொடங்க முதன்மை வகுப்பு அதன் முக்கிய() செயல்பாட்டைக் கொண்டுள்ளது. ஒரு சரம் மாறி “d2” நீண்ட சரம் மதிப்புடன் துவக்கப்படுகிறது.
பிழையைத் தவிர்ப்பதற்காகவும் இந்த ஜாவா குறியீட்டை சீராகச் செயல்படுத்துவதற்காகவும் அதே முயற்சி-பிடிப்பு அறிக்கை காஸ்டாஃப் செய்யப்பட்டுள்ளது. கோப்பு வெளியீட்டு ஸ்ட்ரீமிற்கான 'f' என்ற பொருள் FileOutputStream வகுப்பின் வழியாக 'new.txt' ஐ ஒரு வாதமாக எடுத்து உருவாக்கப்பட்டது. ObjectOutputStream வகுப்பைப் பயன்படுத்தி உருவாக்கப்பட்ட அவுட்புட் ஸ்ட்ரீம் ஆப்ஜெக்ட் “o” க்கு கோப்பு வெளியீட்டு ஸ்ட்ரீம் ஆப்ஜெக்ட் “f” அனுப்பப்பட்டது. இப்போது, வெளியீட்டு ஸ்ட்ரீம் “o”, “new.txt” கோப்பில் எழுத வேண்டிய ஒரு சரம் மாறி “d” ஐக் கடந்து, writeObject() செயல்பாட்டை அழைக்கிறது.
பின்னர், 'new.txt' என்ற கோப்புப் பெயரை அனுப்புவதன் மூலம் FileInputStream வகுப்பைப் பயன்படுத்தி 'fs' என்ற கோப்பு உள்ளீட்டு ஸ்ட்ரீமை உருவாக்கியது, அதாவது, அதிலிருந்து தரவைப் படிக்க. இப்போது, ObjectInputStream class object 'os' ஆனது 'System.out' வகுப்பின் 'println' செயலாக்க அறிக்கையில் ஜாவாவின் readObject() செயல்பாட்டைப் பயன்படுத்தி தரவைப் படிக்க கோப்பு உள்ளீட்டு ஸ்ட்ரீம் ஆப்ஜெக்ட் 'fs' ஐப் பயன்படுத்தும். பின்னர், 'மூடு' செயல்பாட்டை அழைப்பதன் மூலம் உள்ளீடு மற்றும் வெளியீட்டு ஸ்ட்ரீம்களை மூட முனைகிறோம், மேலும் கேட்ச் ஸ்டேட்மென்ட் முயற்சிப் பகுதியில் ஏதேனும் விதிவிலக்குகளைப் பெறவும் இந்த நிரல் செயல்படுத்தல் திடீரென மூடப்படுவதைத் தவிர்க்கவும் பயன்படுத்தப்படுகிறது.
இந்த ஜாவா குறியீடு கோப்பு மற்றும் உரை கோப்பு செயல்படுத்துவது கன்சோலில் சர மதிப்பைக் காட்டுகிறது.
முடிவுரை
ObjectInputStream வகுப்பின் பயன்பாடானது வரிசைப்படுத்தக்கூடிய அல்லது வெளிப்புறமாக்கக்கூடிய நெறிமுறையைப் பயன்படுத்தும் பொருட்களைப் படிக்கக் கிடைக்கும் ஒரே முறையாகும். சுருக்கமாக, கோப்பு பொருள் உள்ளீட்டு ஸ்ட்ரீமிலிருந்து தரவைப் படிக்க ஜாவாவின் ஆப்ஜெக்டின்புட்ஸ்ட்ரீம் வகுப்பைப் பயன்படுத்த தேவையான அனைத்து விவரங்களையும் சேர்த்துள்ளோம். இதற்காக, இரண்டு வெவ்வேறு ஜாவா குறியீட்டு உதாரணங்களை இங்கே தருகிறோம். முதல் எடுத்துக்காட்டு முழு எண் வகை உள்ளீட்டு மாறி மதிப்பைப் பயன்படுத்துகிறது, இரண்டாவது விளக்கம் சரம் மாறி மதிப்பை வெளியேற்றுகிறது, அதாவது உள்ளீட்டு கோப்பு ஸ்ட்ரீமில் இருந்து படிக்கிறது.