BCA / B.Tech 13 min read

Data Persistence: Preferences और Files in Hindi

Data Persistence: Preferences और Files

Data Persistence का मतलब है data को non-volatile memory (जैसे device storage) में save करना ताकि app बंद होने के बाद भी data available रहे।

1: User Preferences को Save और Load करना

SharedPreferences क्या है?

SharedPreferences Android का framework है जो आपको simple data को key-value pairs में save और retrieve करने की अनुमति देता है। यह small amount of data, जैसे user settings (जैसे "Dark Mode" enabled/disabled), high scores, या app का state, save करने के लिए ideal है।

यह data app के uninstall होने तक device पर बना रहता है।

Java में SharedPreferences का उदाहरण:


public class MainActivity extends AppCompatActivity {
    EditText nameEditText;
    TextView savedNameTextView;
    public static final String PREFS_NAME = "MyPrefsFile";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        nameEditText = findViewById(R.id.name_edit_text);
        savedNameTextView = findViewById(R.id.saved_name_tv);

        // 1. Data Load करना
        SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); // 0 = Private Mode
        String savedName = settings.getString("userName", "No Name"); // "userName" is the key
        savedNameTextView.setText("Saved Name: " + savedName);
    }

    // Button click पर call होने वाला method
    public void saveData(View view) {
        // 2. Data Save करना
        SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
        SharedPreferences.Editor editor = settings.edit();
        
        String currentName = nameEditText.getText().toString();
        editor.putString("userName", currentName); // Key-value pair set करें
        
        // Changes को apply करें
        editor.apply(); // apply() background में काम करता है (recommended)
        // editor.commit(); // commit() UI thread पर काम करता है
        
        Toast.makeText(this, "Name Saved!", Toast.LENGTH_SHORT).show();
        savedNameTextView.setText("Saved Name: " + currentName);
    }
}

2: Data को Files में Persist करना

Simple key-value pairs से ज़्यादा complex data (जैसे JSON object, user-generated content, or log files) को save करने के लिए, आप device की file system का उपयोग कर सकते हैं। Android data save करने के लिए दो main locations प्रदान करता है:

1. Internal Storage (आंतरिक स्टोरेज)

  • क्या है: यह device की memory का वह हिस्सा है जो आपकी app के लिए private होता है।
  • फायदे:
    • सुरक्षित: दूसरी apps या user इस data को access नहीं कर सकते।
    • हमेशा उपलब्ध: यह हमेशा available रहता है।
    • Clean Uninstall: जब user आपकी app को uninstall करता है, तो यह data automatic delete हो जाता है।

2. External Storage (बाहरी स्टोरेज)

  • क्या है: यह shared storage होता है (जैसे SD card या internal shared space)।
  • फायदे: Large files (जैसे photos, videos) को save करने के लिए अच्छा है, जिन्हें user या दूसरी apps access कर सकें।

Internal Storage में File को Write और Read करने का उदाहरण:


public class FileActivity extends AppCompatActivity {
    EditText fileContentEditText;
    TextView loadedContentTextView;
    private final String FILENAME = "my_private_file.txt";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_file);
        
        fileContentEditText = findViewById(R.id.file_content_et);
        loadedContentTextView = findViewById(R.id.loaded_content_tv);
    }
    
    // File save करने के लिए button click method
    public void saveToFile(View view) {
        String string = fileContentEditText.getText().toString();
        try (FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE)) {
            fos.write(string.getBytes());
            Toast.makeText(this, "Saved to " + getFilesDir() + "/" + FILENAME, Toast.LENGTH_LONG).show();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    // File load करने के लिए button click method
    public void loadFromFile(View view) {
        try (FileInputStream fis = openFileInput(FILENAME);
             InputStreamReader inputStreamReader = new InputStreamReader(fis);
             BufferedReader bufferedReader = new BufferedReader(inputStreamReader)) {
            
            StringBuilder stringBuilder = new StringBuilder();
            String line;
            while ((line = bufferedReader.readLine()) != null) {
                stringBuilder.append(line).append("
");
            }
            loadedContentTextView.setText(stringBuilder.toString());
            
        } catch (IOException e) {
            e.printStackTrace();
            Toast.makeText(this, "File not found or error reading", Toast.LENGTH_SHORT).show();
        }
    }
}