Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Android

Android में लिस्ट को टेक्स्ट फ़ाइल में स्टोर और पढ़ना कैसे करें?

Android इंटरनल स्टोरेज में फ़ाइल ऑपरेशन

Android ऐप्स इंटरनल स्टोरेज (/data/data/<package>/files/) में प्राइवेट फ़ाइलें बना सकते हैं। यह उदाहरण दर्शाता है कि ArrayList को टेक्स्ट फ़ाइल में कैसे सेव करें और वापस पढ़ें।

उदाहरण: लिस्ट को टेक्स्ट फ़ाइल में सेव और रीड करना

चरण 1: नया प्रोजेक्ट बनाएं

Android Studio में File → New Project चुनें।

चरण 2: लेआउट फ़ाइल (res/layout/activity_main.xml)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    android:orientation="vertical">

    <EditText
        android:id="@+id/enterText"
        android:hint="यहां टेक्स्ट दर्ज करें"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <Button
        android:id="@+id/save"
        android:text="सेव"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <TextView
        android:id="@+id/output"
        android:layout_width="wrap_content"
        android:textSize="25sp"
        android:layout_height="wrap_content" />

</LinearLayout>

चरण 3: MainActivity.java

package com.example.textfilestorage;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {

    Button save;
    ArrayList list = new ArrayList<>();
    TextView output;
    EditText enterText;

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

        output = findViewById(R.id.output);
        enterText = findViewById(R.id.enterText);
        save = findViewById(R.id.save);

        // ऐप शुरू होने पर मौजूदा डेटा लोड करें
        output.setText(readFile());

        save.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String text = enterText.getText().toString().trim();
                if (!text.isEmpty()) {
                    saveToFile(text);
                    output.setText(readFile());
                    enterText.setText("");
                    Toast.makeText(MainActivity.this, "टेक्स्ट सेव किया गया", Toast.LENGTH_LONG).show();
                }
            }
        });
    }

    private void saveToFile(String text) {
        try {
            // इंटरनल स्टोरेज में 'text' डायरेक्टरी बनाएं
            File dir = new File(getFilesDir(), "text");
            if (!dir.exists()) {
                dir.mkdir();
            }

            // sample.txt फ़ाइल में लिखें (ऐपेंड मोड)
            File file = new File(dir, "sample.txt");
            FileWriter writer = new FileWriter(file, true); // true = append mode
            writer.append(text).append("\n");
            writer.flush();
            writer.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    private String readFile() {
        File file = new File(getFilesDir(), "text/sample.txt");
        StringBuilder text = new StringBuilder();
        list.clear();

        try {
            if (file.exists()) {
                BufferedReader br = new BufferedReader(new FileReader(file));
                String line;
                while ((line = br.readLine()) != null) {
                    list.add(line);
                    text.append(line).append("\n");
                }
                br.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return text.toString();
    }
}

चरण 4: AndroidManifest.xml में परमिशन

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
    package="com.example.textfilestorage">

    <!-- इंटरनल स्टोरेज के लिए परमिशन की आवश्यकता नहीं होती -->
    <!-- ये परमिशन एक्सटर्नल स्टोरेज के लिए हैं -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>

    </application>
</manifest>

नोट: इंटरनल स्टोरेज के लिए परमिशन नहीं चाहिए

getFilesDir() इंटरनल स्टोरेज का उपयोग करता है जो ऐप के लिए प्राइवेट होता है। इसके लिए WRITE_EXTERNAL_STORAGE या READ_EXTERNAL_STORAGE परमिशन की आवश्यकता नहीं होती। मैनिफेस्ट में ये परमिशन केवल एक्सटर्नल स्टोरेज (SD कार्ड) के लिए जरूरी हैं।

ऐप चलाएं

ऐप लॉन्च करें, टेक्स्ट दर्ज करें, सेव दबाएं। टेक्स्ट फ़ाइल में जुड़ जाएगा और टेक्स्टव्यू में दिखेगा। फ़ाइल पथ: /data/data/com.example.textfilestorage/files/text/sample.txt

मूल कोड में समस्याएं और सुधार

  • ओवरराइट नहीं ऐपेंड: मूल कोड FileWriter(file) उपयोग करता था जो फ़ाइल ओवरराइट करता है। सुधार: FileWriter(file, true) ऐपेंड मोड के लिए
  • लिस्ट डुप्लीकेशन: हर रीड पर लिस्ट में आइटम जुड़ते जाते थे। सुधार: list.clear() रीड से पहले
  • Arrays.toString गलत: Arrays.toString(new ArrayList[]{list}) गलत आउटपुट देता था। सुधार: StringBuilder से सीधा स्ट्रिंग
  • खाली कैच ब्लॉक: एक्सेप्शन प्रिंट करें कम से कम

मुख्य बिंदु

  • getFilesDir() इंटरनल स्टोरेज पथ देता है
  • FileWriter(file, true) ऐपेंड मोड में खोलता है
  • BufferedReader लाइन-दर-लाइन पढ़ने के लिए कुशल
  • इंटरनल स्टोरेज ऐप अनइंस्टॉल होने पर क्लियर हो जाता है
  • बड़े डेटा के लिए SQLite या Room डेटाबेस बेहतर
  1. Android में strings.xml से मान कैसे पढ़ें? Android में strings.xml से मान कैसे पढ़ें?

    strings.xml से स्ट्रिंग संसाधन पढ़ना यह उदाहरण दर्शाता है कि strings.xml में परिभाषित स्ट्रिंग संसाधन को XML लेआउट और Java कोड दोनों में कैसे उपयोग करें। चरण 1: नया प्रोजेक्ट बनाएं Android Studio में File → New Project चुनें। चरण 2: strings.xml में स्ट्रिंग जोड़ें <resources> <string

  1. एंड्रॉइड ऐप में टेक्स्ट फ़ाइल कैसे पढ़ें (raw रिसोर्स से) एंड्रॉइड ऐप में टेक्स्ट फ़ाइल कैसे पढ़ें (raw रिसोर्स से)

    res/raw फोल्डर से टेक्स्ट फ़ाइल पढ़ने का पूरा उदाहरण एंड्रॉइड में res/raw/ फोल्डर में रखी टेक्स्ट फ़ाइलों को InputStream और BufferedReader के माध्यम से पढ़ा जा सकता है। यह रॉ रिसोर्सेज एपीके में अनकंप्रेस्ड रहते हैं और रनटाइम पर एक्सेसिबल होते हैं। चरण 1: नया प्रोजेक्ट बनाएं Android Studio में प्रो

  1. Android में SharedPreferences से डेटा स्टोर, पढ़ें और एडिट कैसे करें? Android में SharedPreferences से डेटा स्टोर, पढ़ें और एडिट कैसे करें?

    परिचय SharedPreferences Android में छोटी मात्रा में प्राइमिटिव डेटा (बूलियन, फ्लोट, इंट, लॉन्ग, स्ट्रिंग) को की-वैल्यू पेयर के रूप में स्टोर करने का एक सरल तरीका है। यह डेटा ऐप रीस्टार्ट के बाद भी बना रहता है। इस ट्यूटोरियल में हम नाम और ईमेल सेव करना, पढ़ना और क्लियर करना सीखेंगे। आवश्यक चरण चरण