উত্তর:
ইনপুট এবং আউটপুট দেওয়ার বিভিন্ন উপায় বিমূর্ত করার লক্ষ্য InputStream
এবং OutputStream
এটি: স্ট্রিমটি কোনও ফাইল, কোনও ওয়েব পৃষ্ঠা বা স্ক্রিনের কোনও বিষয় নয়। গুরুত্বপূর্ণ বিষয়গুলি হ'ল আপনি স্ট্রিম থেকে তথ্য গ্রহণ করেন (বা সেই প্রবাহে তথ্য প্রেরণ করুন))
InputStream
আপনি পড়েন এমন অনেক কিছুর জন্য ব্যবহৃত হয়।
OutputStream
আপনি লেখেন এমন অনেক কিছুর জন্য ব্যবহৃত হয়।
এখানে কিছু নমুনা কোড। এটি ধরে নিয়েছে InputStream instr
এবং OutputStream osstr
ইতিমধ্যে তৈরি করা হয়েছে:
int i;
while ((i = instr.read()) != -1) {
osstr.write(i);
}
instr.close();
osstr.close();
ইনপুটস্ট্রিম পড়ার জন্য ব্যবহৃত হয়, লেখার জন্য আউটপুট স্ট্রিম। এগুলি একে অপরের সাথে সজ্জকার হিসাবে সংযুক্ত রয়েছে যাতে আপনি বিভিন্ন ধরণের উত্স থেকে সমস্ত ধরণের ডেটা পড়তে / লিখতে পারেন।
উদাহরণস্বরূপ, আপনি কোনও ফাইলে আদিম ডেটা লিখতে পারেন:
File file = new File("C:/text.bin");
file.createNewFile();
DataOutputStream stream = new DataOutputStream(new FileOutputStream(file));
stream.writeBoolean(true);
stream.writeInt(1234);
stream.close();
লিখিত বিষয়বস্তু পড়তে:
File file = new File("C:/text.bin");
DataInputStream stream = new DataInputStream(new FileInputStream(file));
boolean isTrue = stream.readBoolean();
int value = stream.readInt();
stream.close();
System.out.printlin(isTrue + " " + value);
আপনি পড়া / লেখা বাড়ানোর জন্য অন্যান্য ধরণের স্ট্রিম ব্যবহার করতে পারেন। উদাহরণস্বরূপ, আপনি দক্ষতার জন্য একটি বাফার প্রবর্তন করতে পারেন:
DataInputStream stream = new DataInputStream(
new BufferedInputStream(new FileInputStream(file)));
আপনি অন্যান্য ডেটা যেমন অবজেক্ট লিখতে পারেন:
MyClass myObject = new MyClass(); // MyClass have to implement Serializable
ObjectOutputStream stream = new ObjectOutputStream(
new FileOutputStream("C:/text.obj"));
stream.writeObject(myObject);
stream.close();
আপনি অন্যান্য বিভিন্ন ইনপুট উত্স থেকে পড়তে পারেন:
byte[] test = new byte[] {0, 0, 1, 0, 0, 0, 1, 1, 8, 9};
DataInputStream stream = new DataInputStream(new ByteArrayInputStream(test));
int value0 = stream.readInt();
int value1 = stream.readInt();
byte value2 = stream.readByte();
byte value3 = stream.readByte();
stream.close();
System.out.println(value0 + " " + value1 + " " + value2 + " " + value3);
বেশিরভাগ ইনপুট স্ট্রিমগুলির জন্য একটি আউটপুট স্ট্রিমও রয়েছে। আপনি বিশেষ জিনিস পড়া / লেখার জন্য আপনার নিজস্ব স্ট্রিমগুলি সংজ্ঞায়িত করতে পারেন এবং জটিল জিনিসগুলি পড়ার জন্য জটিল স্ট্রিম রয়েছে (উদাহরণস্বরূপ জিপ ফর্ম্যাটটি পড়ার / লেখার জন্য স্ট্রিম রয়েছে)।
থেকে জাভা টিউটোরিয়াল :
একটি স্ট্রিম হ'ল ডেটার ক্রম।
একটি প্রোগ্রাম উত্স থেকে ডেটা পড়ার জন্য একটি ইনপুট স্ট্রিম ব্যবহার করে, একবারে একটি আইটেম:
কোনও প্রোগ্রাম কোনও গন্তব্যে ডেটা লেখার জন্য একটি আউটপুট স্ট্রিম ব্যবহার করে, একই সময়ে একটি আইটেম:
উপরে চিত্রিত ডেটা উত্স এবং ডেটা গন্তব্য হ'ল ডেটা ধারণ করে, উত্পন্ন করে বা গ্রহণ করে এমন কোনও কিছু হতে পারে। স্পষ্টতই এটিতে ডিস্ক ফাইলগুলি অন্তর্ভুক্ত রয়েছে তবে উত্স বা গন্তব্যটি অন্য কোনও প্রোগ্রাম, পেরিফেরিয়াল ডিভাইস, একটি নেটওয়ার্ক সকেট বা একটি অ্যারেও হতে পারে ।
ওরাকল টিউটোরিয়াল থেকে নমুনা কোড :
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class CopyBytes {
public static void main(String[] args) throws IOException {
FileInputStream in = null;
FileOutputStream out = null;
try {
in = new FileInputStream("xanadu.txt");
out = new FileOutputStream("outagain.txt");
int c;
while ((c = in.read()) != -1) {
out.write(c);
}
} finally {
if (in != null) {
in.close();
}
if (out != null) {
out.close();
}
}
}
}
এই প্রোগ্রামটি ব্যবহার বাইট কপি করতে স্ট্রীম করে xanadu.txt ফাইল outagain.txt , একটি সময়ে এক বাইট লিখে
বাইট স্ট্রিমের শীর্ষে মোড়কযুক্ত উন্নত চরিত্রের স্ট্রিমগুলি সম্পর্কে আরও বিশদ জানতে এই এসই প্রশ্নটি দেখুন:
আপনি একটি ইনপুট স্ট্রিম থেকে পড়ে এবং আউটপুট স্ট্রিমে লিখবেন।
উদাহরণস্বরূপ, বলুন যে আপনি কোনও ফাইল অনুলিপি করতে চান। আপনি নতুন ফাইলটিতে লেখার জন্য উত্স ফাইল থেকে পড়ার জন্য একটি ফাইলআইপুট স্ট্রিম এবং একটি ফাইলআউটপুট স্ট্রিম তৈরি করবেন।
যদি আপনার ডেটা একটি চরিত্রের স্ট্রিম হয় তবে আপনি যদি পছন্দ করেন তবে আপনি ইনপুটস্ট্রিমের পরিবর্তে ফাইলআরডার এবং একটি আউটপুট স্ট্রিমের পরিবর্তে একটি ফাইলরাইটার ব্যবহার করতে পারেন।
InputStream input = ... // many different types
OutputStream output = ... // many different types
byte[] buffer = new byte[1024];
int n = 0;
while ((n = input.read(buffer)) != -1)
output.write(buffer, 0, n);
input.close();
output.close();
close
সর্বদা flush
এস, তাই না।
আউটপুটস্ট্রিম একটি বিমূর্ত শ্রেণি যা লেখার আউটপুট উপস্থাপন করে। এখানে অনেকগুলি আলাদা আউটপুট স্ট্রিম ক্লাস রয়েছে এবং তারা কিছু কিছুতে (যেমন স্ক্রিন, বা ফাইলগুলি, বা বাইট অ্যারে, বা নেটওয়ার্ক সংযোগগুলি, ইত্যাদি) লিখে দেয়। ইনপুট স্ট্রিম ক্লাসগুলি একই জিনিস অ্যাক্সেস করে তবে তারা সেগুলি থেকে ডেটা পড়ে read
কোনও ফাইলের ডেটা লিখতে ফাইলআউটপুট স্ট্রিম এবং ফাইলআইপুট স্ট্রিম ব্যবহারের একটি ভাল বুনিয়াদি উদাহরণ এখানে ।
একটি স্ট্রিম তরল, বায়ু বা গ্যাসের একটানা প্রবাহ flow
জাভা স্ট্রিম কোনও উত্স থেকে গন্তব্যে ডেটা প্রবাহ। উত্স বা গন্তব্য একটি ডিস্ক, মেমরি, সকেট বা অন্যান্য প্রোগ্রাম হতে পারে। ডেটা বাইট, অক্ষর বা বস্তু হতে পারে। একই সি # বা সি ++ স্ট্রিমের জন্য প্রযোজ্য। জাভা স্ট্রিমগুলির একটি ভাল রূপক হ'ল জলটি একটি ট্যাপ থেকে বাথটবে এবং পরে নিকাশীতে প্রবাহিত।
ডেটা প্রবাহের স্থির অংশকে উপস্থাপন করে; পঠন এবং লেখার পদ্ধতিগুলি স্ট্রিমের গতিশীল অংশ।
InputStream
উত্স থেকে ডেটা প্রবাহকে OutputStream
প্রতিনিধিত্ব করে, গন্তব্যে ডেটা প্রবাহকে উপস্থাপন করে। অবশেষে, InputStream
এবং OutputStream
সি ফাইল পয়েন্টারগুলির মতো ডেটাতে নিম্ন-স্তরের অ্যাক্সেসের বিমূর্ততা রয়েছে।
স্ট্রিম : সাধারণ শর্তে স্ট্রিম হ'ল ডেটা, সর্বাধিক জেনেরিক স্ট্রিম হ'ল ডেটার বাইনারি উপস্থাপনা।
ইনপুট স্ট্রিম : আপনি যদি কোনও ফাইল বা অন্য কোনও উত্স থেকে ডেটা পড়তে থাকেন তবে ব্যবহৃত স্ট্রিমটি ইনপুট স্ট্রিম। একটি সহজ কথায় ইনপুট স্ট্রিম ডেটা পড়তে চ্যানেল হিসাবে কাজ করে।
আউটপুট স্ট্রিম : আপনি যদি কোনও উত্স (ফাইল ইত্যাদি) থেকে ডেটা পড়তে এবং প্রক্রিয়া করতে চান তবে আপনাকে প্রথমে ডেটা সংরক্ষণ করতে হবে, ডেটা সংরক্ষণ করার অর্থ আউটপুট স্ট্রিম।
একটি আউটপুট স্ট্রিম সাধারণত কিছু ডেটা গন্তব্য যেমন কোনও ফাইল বা নেটওয়ার্ক ইত্যাদির সাথে সম্পর্কিত is জাভা আউটপুট স্ট্রিম এমন একটি গন্তব্য যেখানে ডেটা শেষ পর্যন্ত লেখা হয় এবং এটি শেষ হয় ends
import java.io.printstream;
class PPrint {
static PPrintStream oout = new PPrintStream();
}
class PPrintStream {
void print(String str) {
System.out.println(str)
}
}
class outputstreamDemo {
public static void main(String args[]) {
System.out.println("hello world");
System.out.prinln("this is output stream demo");
}
}