ইনপুট স্ট্রিম এবং আউটপুট স্ট্রিম কী? কেন আমরা কখন তাদের ব্যবহার করব?


290

কেউ আমাকে বুঝিয়ে বললেন কি InputStreamআর OutputStreamকি?

আমি উভয় জন্য ব্যবহারে মামলা সম্পর্কে বিভ্রান্ত করছি InputStreamএবং OutputStream

আপনি যদি নিজের ব্যাখ্যার সাথে কোডের একটি স্নিপেটও অন্তর্ভুক্ত করতে পারেন তবে তা দুর্দান্ত। ধন্যবাদ!

উত্তর:


218

ইনপুট এবং আউটপুট দেওয়ার বিভিন্ন উপায় বিমূর্ত করার লক্ষ্য InputStreamএবং OutputStreamএটি: স্ট্রিমটি কোনও ফাইল, কোনও ওয়েব পৃষ্ঠা বা স্ক্রিনের কোনও বিষয় নয়। গুরুত্বপূর্ণ বিষয়গুলি হ'ল আপনি স্ট্রিম থেকে তথ্য গ্রহণ করেন (বা সেই প্রবাহে তথ্য প্রেরণ করুন))

InputStream আপনি পড়েন এমন অনেক কিছুর জন্য ব্যবহৃত হয়।

OutputStream আপনি লেখেন এমন অনেক কিছুর জন্য ব্যবহৃত হয়।

এখানে কিছু নমুনা কোড। এটি ধরে নিয়েছে InputStream instrএবং OutputStream osstrইতিমধ্যে তৈরি করা হয়েছে:

int i;

while ((i = instr.read()) != -1) {
    osstr.write(i);
}

instr.close();
osstr.close();

67
"স্ট্রিম" কী?
Koray Tugay

55
@ KorayTugay একটি স্ট্রিম সাধারণত অক্ষরের সেট হিসাবে সংজ্ঞায়িত হয়। আরও সুনির্দিষ্ট হওয়ার জন্য, একাধিক বিট বা চরিত্রকে স্ট্রিম হিসাবে ডাকা হয়।
গোথাম গোপালকৃষ্ণন

14
একাধিক চরিত্র স্ট্রিংও। স্ট্রিং থেকে স্ট্রিমের পার্থক্য কী?
প্রজিৎ শ্রেষ্ঠ

আমি মনে করি যে একটি স্ট্রিম কেবল শূন্য এবং একটি is, অক্ষর নয়।
স্মাইলফেস

93

ইনপুটস্ট্রিম পড়ার জন্য ব্যবহৃত হয়, লেখার জন্য আউটপুট স্ট্রিম। এগুলি একে অপরের সাথে সজ্জকার হিসাবে সংযুক্ত রয়েছে যাতে আপনি বিভিন্ন ধরণের উত্স থেকে সমস্ত ধরণের ডেটা পড়তে / লিখতে পারেন।

উদাহরণস্বরূপ, আপনি কোনও ফাইলে আদিম ডেটা লিখতে পারেন:

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);

বেশিরভাগ ইনপুট স্ট্রিমগুলির জন্য একটি আউটপুট স্ট্রিমও রয়েছে। আপনি বিশেষ জিনিস পড়া / লেখার জন্য আপনার নিজস্ব স্ট্রিমগুলি সংজ্ঞায়িত করতে পারেন এবং জটিল জিনিসগুলি পড়ার জন্য জটিল স্ট্রিম রয়েছে (উদাহরণস্বরূপ জিপ ফর্ম্যাটটি পড়ার / লেখার জন্য স্ট্রিম রয়েছে)।


35

থেকে জাভা টিউটোরিয়াল :

একটি স্ট্রিম হ'ল ডেটার ক্রম।

একটি প্রোগ্রাম উত্স থেকে ডেটা পড়ার জন্য একটি ইনপুট স্ট্রিম ব্যবহার করে, একবারে একটি আইটেম:

এখানে চিত্র বর্ণনা লিখুন

কোনও প্রোগ্রাম কোনও গন্তব্যে ডেটা লেখার জন্য একটি আউটপুট স্ট্রিম ব্যবহার করে, একই সময়ে একটি আইটেম:

এখানে চিত্র বর্ণনা লিখুন

উপরে চিত্রিত ডেটা উত্স এবং ডেটা গন্তব্য হ'ল ডেটা ধারণ করে, উত্পন্ন করে বা গ্রহণ করে এমন কোনও কিছু হতে পারে। স্পষ্টতই এটিতে ডিস্ক ফাইলগুলি অন্তর্ভুক্ত রয়েছে তবে উত্স বা গন্তব্যটি অন্য কোনও প্রোগ্রাম, পেরিফেরিয়াল ডিভাইস, একটি নেটওয়ার্ক সকেট বা একটি অ্যারেও হতে পারে

ওরাকল টিউটোরিয়াল থেকে নমুনা কোড :

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 , একটি সময়ে এক বাইট লিখে

বাইট স্ট্রিমের শীর্ষে মোড়কযুক্ত উন্নত চরিত্রের স্ট্রিমগুলি সম্পর্কে আরও বিশদ জানতে এই এসই প্রশ্নটি দেখুন:

বাইট স্ট্রিম এবং অক্ষর প্রবাহ


9

আপনি একটি ইনপুট স্ট্রিম থেকে পড়ে এবং আউটপুট স্ট্রিমে লিখবেন।

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

যদি আপনার ডেটা একটি চরিত্রের স্ট্রিম হয় তবে আপনি যদি পছন্দ করেন তবে আপনি ইনপুটস্ট্রিমের পরিবর্তে ফাইলআরডার এবং একটি আউটপুট স্ট্রিমের পরিবর্তে একটি ফাইলরাইটার ব্যবহার করতে পারেন।

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();

3
closeসর্বদা flushএস, তাই না।
pstanton

5

আউটপুটস্ট্রিম একটি বিমূর্ত শ্রেণি যা লেখার আউটপুট উপস্থাপন করে। এখানে অনেকগুলি আলাদা আউটপুট স্ট্রিম ক্লাস রয়েছে এবং তারা কিছু কিছুতে (যেমন স্ক্রিন, বা ফাইলগুলি, বা বাইট অ্যারে, বা নেটওয়ার্ক সংযোগগুলি, ইত্যাদি) লিখে দেয়। ইনপুট স্ট্রিম ক্লাসগুলি একই জিনিস অ্যাক্সেস করে তবে তারা সেগুলি থেকে ডেটা পড়ে read

কোনও ফাইলের ডেটা লিখতে ফাইলআউটপুট স্ট্রিম এবং ফাইলআইপুট স্ট্রিম ব্যবহারের একটি ভাল বুনিয়াদি উদাহরণ এখানে ।


4

একটি স্ট্রিম তরল, বায়ু বা গ্যাসের একটানা প্রবাহ flow

জাভা স্ট্রিম কোনও উত্স থেকে গন্তব্যে ডেটা প্রবাহ। উত্স বা গন্তব্য একটি ডিস্ক, মেমরি, সকেট বা অন্যান্য প্রোগ্রাম হতে পারে। ডেটা বাইট, অক্ষর বা বস্তু হতে পারে। একই সি # বা সি ++ স্ট্রিমের জন্য প্রযোজ্য। জাভা স্ট্রিমগুলির একটি ভাল রূপক হ'ল জলটি একটি ট্যাপ থেকে বাথটবে এবং পরে নিকাশীতে প্রবাহিত।

ডেটা প্রবাহের স্থির অংশকে উপস্থাপন করে; পঠন এবং লেখার পদ্ধতিগুলি স্ট্রিমের গতিশীল অংশ।

InputStreamউত্স থেকে ডেটা প্রবাহকে OutputStreamপ্রতিনিধিত্ব করে, গন্তব্যে ডেটা প্রবাহকে উপস্থাপন করে। অবশেষে, InputStreamএবং OutputStreamসি ফাইল পয়েন্টারগুলির মতো ডেটাতে নিম্ন-স্তরের অ্যাক্সেসের বিমূর্ততা রয়েছে।


2

স্ট্রিম : সাধারণ শর্তে স্ট্রিম হ'ল ডেটা, সর্বাধিক জেনেরিক স্ট্রিম হ'ল ডেটার বাইনারি উপস্থাপনা।

ইনপুট স্ট্রিম : আপনি যদি কোনও ফাইল বা অন্য কোনও উত্স থেকে ডেটা পড়তে থাকেন তবে ব্যবহৃত স্ট্রিমটি ইনপুট স্ট্রিম। একটি সহজ কথায় ইনপুট স্ট্রিম ডেটা পড়তে চ্যানেল হিসাবে কাজ করে।

আউটপুট স্ট্রিম : আপনি যদি কোনও উত্স (ফাইল ইত্যাদি) থেকে ডেটা পড়তে এবং প্রক্রিয়া করতে চান তবে আপনাকে প্রথমে ডেটা সংরক্ষণ করতে হবে, ডেটা সংরক্ষণ করার অর্থ আউটপুট স্ট্রিম।


0

একটি আউটপুট স্ট্রিম সাধারণত কিছু ডেটা গন্তব্য যেমন কোনও ফাইল বা নেটওয়ার্ক ইত্যাদির সাথে সম্পর্কিত 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");
    }
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.