উত্তর:
বাইটআরআইআইপুট স্ট্রিমটিও কৌশলটি করে:
InputStream is = new ByteArrayInputStream( myString.getBytes( charset ) );
তারপরে পাঠক রূপান্তর করুন:
InputStreamReader reader = new InputStreamReader(is);
ByteArrayInputStream
: যেহেতু: জেডিকে ১.০ এই শ্রেণিটি "জাভা ১.৪ থেকে" অনুমান করার সামান্যতম কারণ নেই। সেই ভুল সংস্করণ নম্বরটি বিশেষত জাভা ১.৪ প্রবর্তনের সাথে অদ্ভুত NIO
এবং একই সংস্করণের মধ্যে কোনও এপিআই এবং এর ধারণাগত উত্তরসূরি প্রবর্তন করা কিছুটা বোধগম্য নয়।
আমি অ্যাপাচি কমন্স ক্লাসও পেয়েছি IOUtils
, তাই:
InputStreamReader isr = new InputStreamReader(IOUtils.toInputStream(myString));
new InputStreamReader(IOUtils.toInputStream(myString, "UTF-16"), "UTF-16")
ক্ষতিহীন হবে।
String
একটি মধ্যে byte[]
অ্যারে ফিরে বাইট রূপান্তর করতে char
গুলি তারপর ...
এটি বিশেষত কোনও ইনপুট স্ট্রিম রিডার হতে হবে? স্ট্রিংরেডার ব্যবহার সম্পর্কে কীভাবে ?
অন্যথায়, আপনি স্ট্রিংবফারআইপুট স্ট্রিম ব্যবহার করতে পারেন , তবে চরিত্র রূপান্তর সংক্রান্ত সমস্যার কারণে এটি স্ট্র্যাকড হয়েছে (এজন্য আপনার স্ট্রিংরেডার পছন্দ করা উচিত)।
@ ড্যান হিসাবে একই প্রশ্ন - স্ট্রিংরেডার কেন নয়?
এটি যদি ইনপুট স্ট্রিম রিডার হতে হয় তবে তা:
String charset = ...; // your charset
byte[] bytes = string.getBytes(charset);
ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
InputStreamReader isr = new InputStreamReader(bais);
byte[] bytes = charset.getBytes();
আপনি কি একটি) Reader
কার্যকারিতা আউট করার চেষ্টা করছেন InputStreamReader
, বা খ) InputStream
কার্যকারিতা আউট InputStreamReader
? আপনি খ পাবেন না)। InputStreamReader
একটি না InputStream
।
এর উদ্দেশ্য InputStreamReader
হ'ল InputStream
- বাইটের উত্স - এবং এটিকে আকারে বাইটগুলি অক্ষরে ডিকোড করা Reader
। আপনার ইতিমধ্যে চরগুলি হিসাবে আপনার ডেটা রয়েছে (আপনার মূল স্ট্রিং)। আপনার স্ট্রিংকে বাইটে এনকোড করা এবং বাইটগুলি অক্ষরে ডিকোড করা একটি রিযান্ট অপারেশন হবে।
আপনি যদি Reader
আপনার উত্স থেকে বেরিয়ে আসার চেষ্টা করছেন তবে ব্যবহার করুনStringReader
।
যদি আপনি একটি পাওয়ার চেষ্টা করছেন InputStream
(যা কেবল আপনাকে বাইট দেয়), IOUtils.toInputStream(..)
এখানে অন্যান্য উত্তরের পরামর্শ অনুসারে অ্যাপাচি কমন্স ব্যবহার করুন।