ইনপুট স্ট্রিমকে বাফারডিডারে রূপান্তর করুন


149

আমি অ্যান্ড্রয়েডের সম্পদ ডিরেক্টরি থেকে ইনপুট স্ট্রিম ব্যবহার করে লাইনে একটি পাঠ্য ফাইল লাইন পড়ার চেষ্টা করছি।

রিডলাইন () ব্যবহার করতে সক্ষম হতে আমি ইনপুট স্ট্রিমটিকে একটি বাফার্ডআরডারে রূপান্তর করতে চাই।

আমার কাছে নিম্নলিখিত কোড রয়েছে:

InputStream is;
is = myContext.getAssets().open ("file.txt");
BufferedReader br = new BufferedReader (is);

তৃতীয় লাইন নিম্নলিখিত ত্রুটিটি ড্রপ করে:

এই লাইনে একাধিক চিহ্নিতকারী
কনস্ট্রাক্টর বাফারড্রিডার (ইনপুটস্ট্রিম) অনির্দিষ্ট করে দেওয়া হয়েছে।

আমি সি ++ এ যা করার চেষ্টা করছি তা এমন কিছু হবে:

StreamReader file;
file = File.OpenText ("file.txt");

line = file.ReadLine();
line = file.ReadLine();
...

আমি কী ভুল করছি বা কীভাবে আমার এটি করা উচিত? ধন্যবাদ!

উত্তর:


281

BufferedReaderInputStreamসরাসরি মুড়তে পারি না । এটা অন্য জড়ান Reader। এই ক্ষেত্রে আপনি যেমন কিছু করতে চান:

BufferedReader br = new BufferedReader(new InputStreamReader(is, "UTF-8"));

হ্যাঁ, ইনপুট স্ট্রিম রিডার দিয়ে একটি ইনপুট স্ট্রিম মোড়ানো, যা বাফার্ডারীডার দ্বারা মোড়ানো রয়েছে রিডলাইন () ফাংশনটি ব্যবহার করার জন্য একটি সাধারণ "কৌশল"।
সেটআপ করুন

14
আমি প্রস্তাব দিচ্ছি: BufferedReader br = new BufferedReader(new InputStreamReader(is, StandardCharsets.UTF_8));জাভা 7
তে

স্ট্যান্ডার্ডচরেটসগুলি এপিআই লেভেল> 19 এ কাজ করে না। @ ব্রকলো
ফ্লোরিডা

1
আমার মনে হয় আপনি বলতে চাইছেন API স্তর> = 19 না হলে কাজ করে না?
brcolow

23

একটি বাফার্ডরিডার কনস্ট্রাক্টর একটি পাঠককে যুক্তি হিসাবে গ্রহণ করে, ইনপুট স্ট্রিম হিসাবে নয়। আপনার প্রবাহটি থেকে প্রথমে আপনার একটি পাঠক তৈরি করা উচিত:

Reader reader = new InputStreamReader(is);
BufferedReader br = new BufferedReader(reader);

পছন্দসইভাবে, আপনি স্ট্রিমরিডার কনস্ট্রাক্টরে একটি চরসেট বা অক্ষর এনকোডিংয়ের নামও সরবরাহ করেন। যেহেতু একটি স্ট্রিম কেবল বাইট সরবরাহ করে তাই এগুলিকে পাঠ্যে রূপান্তরিত করার অর্থ এনকোডিংটি অবশ্যই জানা উচিত। আপনি যদি এটি নির্দিষ্ট না করে থাকেন তবে সিস্টেম ডিফল্ট ধরে নেওয়া হবে।


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.