জাভা অবজেক্ট ইনপুটস্ট্রিম

Jabha Abajekta Inaputastrima



“একটি অবজেক্টআউটপুট স্ট্রীমের অবজেক্টের মাধ্যমে লেখা তথ্য প্রাথমিকভাবে অবজেক্টইনপুট স্ট্রিম ক্লাস ব্যবহার করে অ্যাক্সেস করা হয়। ObjectInputStream ক্লাসের মূল উদ্দেশ্য হবে অবজেক্টআউটপুট স্ট্রীম ক্লাস নিযুক্ত করে উত্পাদিত মৌলিক ডেটা এবং সত্তাগুলিকে পুনর্গঠন করা। একটি SocketStream ব্যবহার করে, ObjectInputStream বিভিন্ন হোস্ট জুড়ে বস্তু স্থানান্তর করার জন্য নিযুক্ত হতে পারে। অতএব, আমরা ফাইল ইনপুট স্ট্রীম থেকে ডেটা পড়ার জন্য অবজেক্টইনপুটস্ট্রিম ক্লাস অবজেক্ট বন্ধ করার জন্য আমাদের উবুন্টু 20.04 সিস্টেমের জন্য একটি সহায়ক গাইড লেখার সিদ্ধান্ত নিয়েছি। একটি কনসোল খোলার সাথে শুরু করা যাক।'

উদাহরণ 01

আমাদের নিবন্ধের প্রথম উদাহরণ শুরু করে, আমরা একটি নতুন জাভা ফাইল তৈরি করছি, “test.java”। এর পরে, আমরা একই ফোল্ডারে একটি পাঠ্য ফাইল তৈরি করেছি।







একটি জাভা প্রোগ্রামে ইনপুট স্ট্রীমের অবজেক্ট পড়তে, আমাদের আউটপুট স্ট্রীম আমদানি করতে হবে। সুতরাং, আমরা শুরুতে 'java.io.ObjectInputStream' এবং 'java.io.ObjectOutputStream' প্যাকেজ আমদানি করছি। এর সাথে, একটি ফাইলে ডেটা সন্নিবেশ করার জন্য, আমাদের 'java.io.FileInputStream' এবং 'java.io.FileInputStream' আমদানি করতে হবে। আমরা একটি মেইন() ফাংশন ধরে একটি ক্লাস 'Main' তৈরি করেছি।



একটি পূর্ণসংখ্যা ভেরিয়েবল 'd' এর ঘোষণা থেকে ফাংশন সম্পাদন শুরু হয়। ত্রুটির কারণে প্রোগ্রাম থেকে হঠাৎ প্রস্থান এড়াতে, আমরা জাভা-এর ট্রাই-ক্যাচ স্টেটমেন্ট যোগ করেছি। FileOutputStream ক্লাসের মাধ্যমে একটি ফাইল আউটপুট স্ট্রিম অবজেক্ট 'f' এর আরম্ভ করার সাথে 'ট্রাই' অংশটি শুরু হয়। আমরা এই বস্তুর 'f' ফাইলের নাম 'new.txt' পাস করেছি। আমরা একটি অবজেক্ট আউটপুট স্ট্রীম 'o' তৈরি করেছি এবং একটি ফাইলকে একটি আউটপুট স্ট্রিম করার জন্য অবজেক্ট আউটপুট স্ট্রিম ক্লাসে ফাইল অবজেক্ট 'f' পাস করেছি।



পরের লাইনে, আমরা জাভা আউটপুট স্ট্রিমের writeInt() ফাংশনকে আউটপুট স্ট্রিম অবজেক্ট 'o' এর মাধ্যমে কল করছি যাতে এটি একটি পূর্ণসংখ্যা ভেরিয়েবল 'd' পাস করা যায়, অর্থাৎ এটিকে একটি ফাইলে সংরক্ষণ করতে। 12 লাইনে, আমরা ফাইল ইনপুট স্ট্রীম 'fs' তৈরি করেছি জাভা এর FileInputStream ক্লাস ব্যবহার করে এটিকে একটি ফাইল পাস করে 'new.txt', অর্থাৎ, এতে ইতিমধ্যে ডেটা আছে। এই ফাইল ইনপুট স্ট্রীম অবজেক্ট 'fs' ফাইল স্ট্রীম থেকে পড়া সক্ষম করতে ObjectInputStream ক্লাসের নতুন জেনারেট হওয়া অবজেক্ট 'os' এ পাস করা হয়েছে। জাভার 'System.out' প্যাকেজ থেকে println() ফাংশনটি নতুন.txt ফাইল থেকে ডেটা প্রদর্শনের জন্য অবজেক্ট ইনপুট স্ট্রিম অবজেক্ট 'os' এর মাধ্যমে readInt() ফাংশনকে কল করার জন্য কাস্টঅফ করা হয়েছে। এর পরে, আমরা জাভাতে ফাইল হ্যান্ডলিং এর 'ক্লোজ' ফাংশন ব্যবহার করে নিজ নিজ অবজেক্ট 'o' এবং 'os' ব্যবহার করে আউটপুট স্ট্রীম এবং ইনপুট স্ট্রীম বন্ধ করে দিচ্ছি। স্ট্রিমগুলি বন্ধ করার জন্য এটি একটি প্রয়োজনীয় পদক্ষেপ যাতে অন্য কোনও ব্যবহারকারী কোনও ফাইল থেকে ডেটা ইনপুট বা আউটপুট করতে না পারে৷ ক্যাচ() স্টেটমেন্টের মধ্যে, আমরা একটি ত্রুটি পেতে getStackTrace() ফাংশনটি ব্যবহার করছি এবং ব্যতিক্রম ভেরিয়েবল 'e' এর মাধ্যমে পর্দায় প্রদর্শন করছি। এই প্রোগ্রামটি শেলে কার্যকর করার জন্য প্রস্তুত।





আমরা আমাদের জাভা কোড ফাইলটি এক্সিকিউশনের আগে সেভ করে রেখেছিলাম এবং 'test.java' ফাইলটি এক্সিকিউট করার জন্য জাভা কীওয়ার্ড ইন্সট্রাকশন ব্যবহার করেছিলাম। বিনিময়ে কিছুই ফেরত দেয় না। এছাড়াও, একটি টেক্সট ফাইল 'new.txt' এর ডাটা শেলে 'cat' নির্দেশনা ব্যবহার করে প্রদর্শন করা একটি আবর্জনা মান প্রদর্শন করে। এর কারণ হল, বেশিরভাগ সময়, জাভা এক্সিকিউটর ফাইল থেকে পূর্ণসংখ্যার মান পড়তে অক্ষম। কিন্তু সম্ভবত, এটি সঠিক পূর্ণসংখ্যা মান প্রদর্শন করবে।



নতুন.txt ফাইলটি ম্যানুয়ালি ওপেন করে চেক করার সময়, আমরা দেখেছি যে ফাইলটিতে মানের একটি ইউনিকোড ফর্ম্যাট দেখানো হয়েছে।

আপনি যদি ফাইল স্ট্রীম থেকে পূর্ণসংখ্যার মান প্রদর্শন করতে অক্ষম হন, তাহলে আপনি 'o' অবজেক্টের মাধ্যমে ফাইল স্ট্রীমে 'd' মান লিখতে writeInt() ফাংশনের পরিবর্তে জাভা প্রোগ্রামে writeObject() ফাংশন ব্যবহার করতে পারেন। প্রদর্শিত হিসাবে। সেই সাথে, ফাইল ইনপুট স্ট্রীম থেকে ডেটা প্রদর্শন করার জন্য আপনাকে readInt() ফাংশনের পরিবর্তে 'readObject()' ফাংশনটি বন্ধ করতে হবে।

এই কোডটি আপডেট করলে এক্সিকিউশনে পূর্ণসংখ্যার মান প্রদর্শিত হবে।

উদাহরণ 02

স্ট্রিং টাইপ মানের জন্য অবজেক্ট ইনপুট স্ট্রীম কাস্ট অফ করার জন্য জাভা প্রোগ্রামিং এর আরেকটি মান আছে। এইভাবে, আমরা জাভা লাইব্রেরির “io” প্যাকেজ থেকে জাভা-এর একই FileInputStream, FileOutputStream, ObjectInputStream এবং অবজেক্টআউটপুট স্ট্রীম ক্লাসের আমদানি করে এই উদাহরণ কোডটি শুরু করেছি। এই কোডটি কার্যকর করা শুরু করার জন্য মেইন ক্লাসের প্রধান() ফাংশন রয়েছে। একটি স্ট্রিং ভেরিয়েবল 'd2' একটি দীর্ঘ স্ট্রিং মান দিয়ে শুরু করা হয়।

ত্রুটি এড়াতে এবং এই জাভা কোডের মসৃণ সম্পাদনের জন্য একই ট্রাই-ক্যাচ বিবৃতিটি বাতিল করা হয়েছে। ফাইল আউটপুট স্ট্রীমের জন্য বস্তু 'f' একটি আর্গুমেন্ট হিসাবে 'new.txt' গ্রহণ করে FileOutputStream ক্লাসের মাধ্যমে তৈরি করা হয়েছে। ফাইল আউটপুট স্ট্রিম অবজেক্ট 'f' আউটপুট স্ট্রিম অবজেক্ট 'o' এ পাস করা হয়েছে যা ObjectOutputStream ক্লাস ব্যবহার করে তৈরি করা হয়েছে। এখন, আউটপুট স্ট্রীম “o” একটি স্ট্রিং ভেরিয়েবল “d” পাস করে writeObject() ফাংশনকে কল করছে “new.txt” ফাইলে লেখা।

তারপরে, ফাইল ইনপুটস্ট্রিম ক্লাস ব্যবহার করে একটি ফাইল ইনপুট স্ট্রীম 'fs' তৈরি করে একটি ফাইল নাম 'new.txt' পাস করে, অর্থাৎ, এটি থেকে ডেটা পড়ার জন্য। এখন, ObjectInputStream ক্লাস অবজেক্ট 'os' ফাইল ইনপুট স্ট্রিম অবজেক্ট 'fs' ব্যবহার করে 'System.out' ক্লাসের 'println' এক্সিকিউশন স্টেটমেন্টে জাভা-এর readObject() ফাংশন ব্যবহার করে ডেটা পড়তে হবে। তারপর, আমরা 'ক্লোজ' ফাংশনকে কল করে ইনপুট এবং আউটপুট স্ট্রীম বন্ধ করার প্রবণতা রাখি এবং চেষ্টা অংশে ঘটে যাওয়া ব্যতিক্রমগুলি পেতে এবং এই প্রোগ্রাম এক্সিকিউশনের হঠাৎ বন্ধ হওয়া এড়াতে ক্যাচ স্টেটমেন্ট ব্যবহার করা হয়।

এই জাভা কোড ফাইল এবং টেক্সট ফাইলের সম্পাদন কনসোলে স্ট্রিং মান প্রদর্শন করে।

উপসংহার

অবজেক্টইনপুটস্ট্রিম ক্লাসের ব্যবহার হল একমাত্র পদ্ধতি যা সিরিয়ালাইজেবল বা এক্সটারনালাইজেবল প্রোটোকল ব্যবহার করে এমন পদার্থ পড়ার জন্য উপলব্ধ। সংক্ষেপে, আমরা ফাইল অবজেক্ট ইনপুট স্ট্রীম থেকে ডেটা পড়ার জন্য জাভার অবজেক্টইনপুটস্ট্রিম ক্লাস ব্যবহার করার জন্য প্রয়োজনীয় সমস্ত বিবরণ অন্তর্ভুক্ত করেছি। এই জন্য, আমরা এখানে দুটি ভিন্ন জাভা কোড উদাহরণ নিক্ষেপ করা হয়েছে. প্রথম উদাহরণটি পূর্ণসংখ্যার প্রকারের ইনপুট ভেরিয়েবল মান ব্যবহার করে, যখন দ্বিতীয় চিত্রটি স্ট্রিং ভেরিয়েবল মানকে ঢালাই করা হয়েছে, যেমন, ইনপুট ফাইল স্ট্রীম থেকে পড়া।