প্রধান পার্থক্য:
- স্ক্যানার
- একটি সাধারণ পাঠ্য স্ক্যানার যা নিয়মিত এক্সপ্রেশন ব্যবহার করে আদিম ধরণের এবং স্ট্রিংকে বিশ্লেষণ করতে পারে।
- একটি স্ক্যানার একটি ডিলিমিটার প্যাটার্ন ব্যবহার করে টোকেনগুলিতে তার ইনপুটটি ভেঙে দেয়, যা ডিফল্টরূপে সাদা স্থানের সাথে মেলে। ফলস্বরূপ টোকেনগুলি পরবর্তী বিভিন্ন পদ্ধতি ব্যবহার করে বিভিন্ন ধরণের মানগুলিতে রূপান্তরিত হতে পারে।
উদাহরণ
String input = "1 fish 2 fish red fish blue fish";
Scanner s = new Scanner(input).useDelimiter("\\s*fish\\s*");
System.out.println(s.nextInt());
System.out.println(s.nextInt());
System.out.println(s.next());
System.out.println(s.next());
s.close();
নিম্নলিখিত আউটপুট মুদ্রণ:
1
2
red
blue
এই কোড সহ একই আউটপুট উত্পন্ন হতে পারে, যা একবারে চারটি টোকেনকে বিশ্লেষণ করতে নিয়মিত অভিব্যক্তি ব্যবহার করে:
String input = "1 fish 2 fish red fish blue fish";
Scanner s = new Scanner(input);
s.findInLine("(\\d+) fish (\\d+) fish (\\w+) fish (\\w+)");
MatchResult result = s.match();
for (int i=1; i<=result.groupCount(); i++)
System.out.println(result.group(i));
s.close(); `
BufferedReader:
একটি অক্ষর-ইনপুট স্ট্রিম থেকে পাঠ্য পড়ায়, অক্ষরগুলি বাফার করে যাতে অক্ষর, অ্যারে এবং লাইনগুলির দক্ষ পাঠের ব্যবস্থা করা যায়।
বাফার আকার নির্দিষ্ট করা যেতে পারে, বা ডিফল্ট আকার ব্যবহার করা যেতে পারে। বেশিরভাগ উদ্দেশ্যে ডিফল্ট যথেষ্ট বড়।
সাধারণভাবে, একটি পাঠকের তৈরি প্রতিটি পঠন অনুরোধ অন্তর্নিহিত চরিত্র বা বাইট স্ট্রিমের সাথে সম্পর্কিত পঠন অনুরোধের কারণ ঘটায়। সুতরাং যে কোনও পাঠকের আশেপাশে একটি বাফারডারিডার মোড়ানো পরামর্শ দেওয়া হয় যার রিড () অপারেশনগুলি ব্যয়বহুল হতে পারে, যেমন ফাইলরেডার এবং ইনপুট স্ট্রিমরেডার্স। উদাহরণ স্বরূপ,
BufferedReader in
= new BufferedReader(new FileReader("foo.in"));
নির্দিষ্ট ফাইল থেকে ইনপুট বাফার করবে। বাফারিং ছাড়াই, প্রতিটি পড়ার () বা রিডলাইন () এর অনুরোধ ফাইল থেকে বাইট পড়তে পারে, অক্ষরে রূপান্তরিত হতে পারে এবং তারপরে ফিরে আসে, যা খুব অদক্ষ হতে পারে। পাঠ্যসূচী ইনপুট জন্য ডেটা ইনপুট স্ট্রিমগুলি ব্যবহার করে এমন প্রোগ্রামগুলিকে প্রতিটি ডেটা ইনপুটস্ট্রিমকে উপযুক্ত বাফারআডার দিয়ে প্রতিস্থাপনের মাধ্যমে স্থানীয়করণ করা যায়।
সূত্র: লিংক