স্ট্রিমগুলি ( InputStream
এবং OutputStream
) বাইনারি ডেটা স্থানান্তর করে। আপনি যদি স্ট্রিমে একটি স্ট্রিং লিখতে চান তবে আপনাকে প্রথমে এটিকে বাইটে রূপান্তর করতে হবে, বা অন্য কথায় এটি এনকোড করতে হবে। আপনি String.getBytes(Charset)
পদ্ধতিটি ব্যবহার করে ম্যানুয়ালি (যেমন আপনি পরামর্শ হিসাবে) এটি করতে পারেন , তবে আপনার String.getBytes()
পদ্ধতিটি এড়ানো উচিত , কারণ এটি জেভিএমের ডিফল্ট এনকোডিং ব্যবহার করে, যা নির্ভরযোগ্যভাবে কোনও বহনযোগ্য উপায়ে পূর্বাভাস করা যায় না।
কোনও স্ট্রিমে চরিত্রের ডেটা লেখার স্বাভাবিক উপায়টি যদিও স্ট্রিমটিকে একটি Writer
, (প্রায়শই ক PrintWriter
) এ মোড়ানো হয় যা আপনি যখন তার write(String)
(বা print(String)
) পদ্ধতিতে কল করেন তখন এটি আপনার জন্য রূপান্তর করে । ইনপুট স্ট্রিমগুলির জন্য সংশ্লিষ্ট মোড়ক একটি পাঠক is ।
PrintStream
OutputStream
এই অর্থে একটি বিশেষ বাস্তবায়ন যে এটিতে এমন পদ্ধতি রয়েছে যা স্বয়ংক্রিয়ভাবে স্ট্রিংগুলি এনকোড করে (এটি অভ্যন্তরীণভাবে কোনও লেখক ব্যবহার করে)। তবে এটি এখনও একটি স্রোত। এটি আপনার বা আপনার স্ট্রিমটি কোনও লেখকের সাথে নিরাপদে গুটিয়ে রাখতে পারে এটি কোনও PrintStream
বা অন্য কোনও স্ট্রিম বাস্তবায়নের বিষয় নয়। ডাবল এনকোডিংয়ের কোনও আশঙ্কা নেই।
আউটপুট স্ট্রিম সহ মুদ্রণ লেখকের উদাহরণ:
try (PrintWriter p = new PrintWriter(new FileOutputStream("output-text.txt", true))) {
p.println("Hello");
} catch (FileNotFoundException e1) {
e1.printStackTrace();
}