আজকের পর্বে আমরা InternalStorage এবং FileOutputStream এর ব্যবহার প্রয়োগ শেষ করব। প্রথমেই String এ ডিক্লিয়ার করা data অবজেক্ট save মেথডে data = et.getText().toString(); এভাবে ডিক্লিয়ার করে দেয়। তারপর FileOutputStream ক্লাস এ fs কে ডিক্লিয়ার করে openFileOutput এ এভাবে ডিক্লিয়ার করে দেয় openFileOutput( file, MODE_PRIVATE);। এখানে FileOutputStream হচ্ছে এমন একটি ক্লাস যা outputstream হিসেবে কাজ করে এবং যেকোনো ফাইল read করার জন্য byte কোডকে write করে। অপরদিকে MODE_PRIVATEব্যবহার হয়েছে যেন, যেই shared preference তৈরি করা হচ্ছে তা যেন শুধুমাত্র এই অ্যাপ্লিকেশান ই ব্যবহার করা যায়।
package com.example.android22; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStreamReader; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.View; import android.widget.EditText; import android.widget.Toast; public class MainActivity extends Activity { EditText et; String data; String file = "ourdata"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); et = (EditText)(findViewById(R.id.editText1)); } public void save() { data = et.getText().toString(); try { FileOutputStream fs = openFileOutput( file, MODE_PRIVATE); fs.write(data.getBytes()); fs.close(); Toast.makeText(getBaseContext(),"file saved",Toast.LENGTH_SHORT).show(); } catch (Exception e) { e.printStackTrace(); } } public void read(){ try { FileInputStream fr = openFileInput(file); int c; String temp=""; while( (c = fr.read()) != -1) { temp = temp + Character.toString((char)c); } et.setText(temp); Toast.makeText(getBaseContext(),"file read",Toast.LENGTH_SHORT).show(); } catch(Exception e){ } } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true; } }
এখন openFileOutput এ এরর প্রদর্শন করলে try/catch দ্বারা তা ফিক্স করে দিতে হবে।তারপর ডাটাকে Byte এ write করার জন্য fs.write(data.getBytes()); এভাবে ডিক্লিয়ার করে দিতে হবে। ফাইল সেভ হবার পর Toast নোটিফিকেশান এর জন্য এভাবে দিক্লিয়ার করে দিতে হবে Toast.makeText(getBaseContext(),"file saved",Toast.LENGTH_SHORT).show();
তারপর ডাটা read করার জন্য read() মেথডটি সেট করব। ফাইল read করার জন্য আমরা FileInputStream ক্লাসটি ব্যবহার করব। উপরের কোডের মত ডিক্লিয়ার করে দেয়। এখানে String কে read করার জন্য temp variable ডিক্লিয়ার করব। এবং while লোপের মধ্যে যতক্ষণ পর্যন্ত না ইনপুট দেয়া ফাইল এর -1 ইনডেক্স পর্যন্ত যাবে ততক্ষন পর্যন্ত লুপ ঘুরবে। সর্বশেষে et.setText(temp); দিয়ে টেক্সট সেট করে দিতে হবে। ফাইল রিড হবার পর Toast নোটিফিকেশান এর জন্য ডিক্লিয়ার করে দিতে হবে এভাবে Toast.makeText(getBaseContext(),"file read",Toast.LENGTH_SHORT).show();
এখন অ্যাপটি রান করে এডিট টেক্সট এ ডাটা ইনপুট দিয়ে সেভ করার পর, তা আবার ডিলিট করে যদি রিড বাটনে প্রেস করা হয় তাহলে সেভ হওয়া টেক্সটটি আবার দেখা যাবে।
এইছিল আজকের InternalStorage এবং FileOutputStream ব্যবহার এর শেষ পর্ব
এন্ড্রয়েড ডেভেলপমেন্ট এর সর্বশেষ পর্ব সম্পর্কে নোটিফিকেশান পেতে লাইক করুন ফেসবুকের এই পেইজে এ।
আমি নাঈম হায়দার ঋদ্ধি। বিশ্বের সর্ববৃহৎ বিজ্ঞান ও প্রযুক্তির সৌশল নেটওয়ার্ক - টেকটিউনস এ আমি 12 বছর যাবৎ যুক্ত আছি। টেকটিউনস আমি এ পর্যন্ত 76 টি টিউন ও 44 টি টিউমেন্ট করেছি। টেকটিউনসে আমার 6 ফলোয়ার আছে এবং আমি টেকটিউনসে 0 টিউনারকে ফলো করি।
Computer ও Programming পছন্দ, আমার youtube channel https://www.youtube.com/channel/UCYKbAf2kXLgKav30hd3zDPQ . আমার ফেসবুক প্রোফাইল https://www.facebook.com/nayeem.riddhi
যেই অ্যাপসটি তৈরি করা হল এটা কি ডাটা রিসাইকেল করার জন্য??