উত্তর:
থেকে ডক্স এর flushপদ্ধতি:
আউটপুট স্ট্রিম ফ্লাশ করে এবং কোনও বাফার আউটপুট বাইটগুলি লিখিত হতে বাধ্য করে। ফ্লাশের সাধারণ চুক্তি হ'ল এটিকে কল করা একটি ইঙ্গিত যে, পূর্বে লিখিত কোনও বাইট যদি আউটপুট স্ট্রিমের প্রয়োগ দ্বারা বাফার হয়ে থাকে তবে এই জাতীয় বাইটগুলি অবিলম্বে তাদের নির্ধারিত গন্তব্যে লেখা উচিত।
বাফারিং মূলত I / O এর কার্যকারিতা উন্নত করার জন্য করা হয়। এ সম্পর্কে আরও এই নিবন্ধটি থেকে পড়া যেতে পারে: জাভা আই / ও পারফরম্যান্স টিউন করা ।
আমরা যখন কোনও কমান্ড দিই, সেই কমান্ডের প্রবাহগুলি আমাদের কম্পিউটারে বাফার (একটি অস্থায়ী মেমরি অবস্থান) নামক মেমরি লোকেশনে সংরক্ষণ করা হয়। সমস্ত অস্থায়ী মেমরি অবস্থান পূর্ণ হলে আমরা ফ্লাশ () ব্যবহার করি যা ডেটার সমস্ত স্ট্রিম ফ্লাশ করে এবং সেগুলি সম্পূর্ণরূপে কার্যকর করে এবং বাফার অস্থায়ী অবস্থানে নতুন স্ট্রিমগুলিকে একটি নতুন স্থান দেয়। -হ্যা আপনি বুঝতে পারবেন
BufferedOutputStream, BufferedWriter, ObjectOutputStream,এবং PrintXXXক্লাস। flush()অন্য কোন স্ট্রীমের পদ্ধতি বা Writerকিছুই করে না।
flush()না স্পষ্টভাবে আমন্ত্রণ জানানোর প্রয়োজন হয় না । নিজেই ফ্লাশ চালায়। BufferedWriterclose()close()
close()কল flush(), সুতরাং FileWriterবাফার ছাড়া ব্যবহার করার সময় উভয়কে কল করা বাড়াবাড়ি।
আপনি যখন কোনও স্ট্রিমে ডেটা লেখেন, তা অবিলম্বে লেখা হয় না এবং এটি বাফার হয়। সুতরাং ব্যবহারflush() আপনার যখন বাফার থেকে সমস্ত ডেটা লিখিত আছে তা নিশ্চিত হওয়া দরকার তখন ।
আমাদের নিশ্চিত হওয়া দরকার যে আমরা স্ট্রিমটি বন্ধ করার আগে সমস্ত লেখক সম্পূর্ণ হয়ে গেছে, এবং সে কারণেই flush() ফাইল / বাফার লেখককে ডাকা হয়close() ।
তবে আপনার যদি কোনও প্রয়োজনীয়তা থাকে যে আপনি স্ট্রিমটি বন্ধ করার আগে আপনার সমস্ত লেখাগুলি যে কোনও সময় সংরক্ষণ করা যায়, ব্যবহার করুন flush()।
FilterOutputStreamএবং এর গ্যারান্টিযুক্ত FilterWriter।
যদি বাফারটি পূর্ণ হয়, এটিতে বাফার করা সমস্ত স্ট্রিংগুলি সেগুলি ডিস্কে সংরক্ষণ করা হবে। বড় চুক্তি থেকে বাঁচতে বাফার ব্যবহার করা হয়! এবং ওভারহেড
জাভা লিবিজে রাখা বাফারডাইটার শ্রেণিতে, এখানে একটি লাইন রয়েছে:
private static int defaultCharBufferSize = 8192;
আপনি যদি বাফারটি পূর্ণ হওয়ার আগে ডেটা প্রেরণ করতে চান তবে আপনার নিয়ন্ত্রণ থাকবে। জাস্ট ফ্লাশ ইট। Writer.flush () কে কল করুন, "বাফারে যা আছে তা এখনই প্রেরণ করুন!
রেফারেন্স বই: https://www.amazon.com/Head-First-Java-Kathy-Sierra/dp/0596009208
পৃষ্ঠাসমূহ: 453
স্ট্রিমগুলি প্রায়শই থ্রেড দ্বারা অ্যাক্সেস করা হয় যা পর্যায়ক্রমে তাদের বিষয়বস্তু খালি করে দেয় এবং উদাহরণস্বরূপ, এটি স্ক্রিনে প্রদর্শন করুন, এটি সকেটে প্রেরণ করুন বা কোনও ফাইলটিতে লিখুন। এটি কার্য সম্পাদনের কারণে করা হয়। একটি আউটপুট স্ট্রিম ফ্লাশ করার অর্থ হ'ল আপনি থামতে চান, স্ট্রিমের সামগ্রীটি সম্পূর্ণ তার গন্তব্যে স্থানান্তরিত হওয়ার জন্য অপেক্ষা করুন এবং তারপরে স্ট্রিমটি খালি এবং প্রেরিত সামগ্রী দিয়ে সম্পাদন পুনরায় শুরু করুন।
পারফরম্যান্স ইস্যুর জন্য, প্রথম ডেটা বাফারে লিখতে হবে। বাফার পূর্ণ হয়ে গেলে ডেটা আউটপুট (ফাইল, কনসোল ইত্যাদি) এ লেখা হয় is যখন বাফার আংশিকভাবে পূর্ণ হয়ে যায় এবং আপনি আউটপুটে (ফাইল, কনসোল) প্রেরণ করতে চান তখন আংশিকভাবে পূরণ করা বাফার আউটপুটে (ফাইল, কনসোল) লিখতে আপনাকে নিজে ফ্লাশ () পদ্ধতিটি কল করতে হবে call