SQLite
 sql >> डेटाबेस >  >> RDS >> SQLite

ऑफ़लाइन उपयोग के लिए पार्स किए गए JSON को कैश कैसे करें

क्यों न इसे कुछ इस तरह का उपयोग करके अपने ऐप के कैशे फ़ोल्डर में सहेजें:

String path = Environment.getExternalStorageDirectory() + File.separator + "cache" + File.separator;
File dir = new File(path);
if (!dir.exists()) {
    dir.mkdirs();
}
path += "data";
File data = new File(path);
if (!data.createNewFile()) {
    data.delete();
    data.createNewFile();
}
ObjectOutputStream objectOutputStream = new ObjectOutputStream(new FileOutputStream(data));
objectOutputStream.writeObject(actorsList);
objectOutputStream.close();

और उसके बाद, आप इसका उपयोग करके किसी भी समय इसे पढ़ सकते हैं:

List<?> list = null;
File data = new File(path);
try {
    if(data.exists()) {
        ObjectInputStream objectInputStream = new ObjectInputStream(new FileInputStream(data));
        list = (List<Object>) objectInputStream.readObject();
        objectInputStream.close();
    }
} catch (IOException e) {
    e.printStackTrace();
} catch (ClassNotFoundException e) {
    e.printStackTrace();
}

अद्यतन करें: ठीक है, ObjectToFileUtil नाम की क्लास बनाएं, इस कोड को बनाए गए क्लास में पेस्ट करें

package <yourpackagehere>;

import android.os.Environment;

import java.io.*;

public class ObjectToFileUtil {

    public static String objectToFile(Object object) throws IOException {
        String path = Environment.getExternalStorageDirectory() + File.separator + "cache" + File.separator;
        File dir = new File(path);
        if (!dir.exists()) {
            dir.mkdirs();
        }
        path += "data";
        File data = new File(path);
        if (!data.createNewFile()) {
            data.delete();
            data.createNewFile();
        }
        ObjectOutputStream objectOutputStream = new ObjectOutputStream(new FileOutputStream(data));
        objectOutputStream.writeObject(object);
        objectOutputStream.close();
        return path;
    }

    public static Object objectFromFile(String path) throws IOException, ClassNotFoundException {
        Object object = null;
        File data = new File(path);
        if(data.exists()) {
            ObjectInputStream objectInputStream = new ObjectInputStream(new FileInputStream(data));
            object = objectInputStream.readObject();
            objectInputStream.close();
        }
        return object;
    }
}

को अपने पैकेज नाम में बदलें और WRITE_EXTERNAL_STORAGE जोड़ना न भूलें AndroidManifest.xml . की अनुमति . अपने MainActivity ऐड फील्ड में

private String dataPath;

और JSONAsyncTask वर्ग की अपनी onPostExecute विधि को

. में बदलें
protected void onPostExecute(Boolean result) {
    dialog.cancel();
    adapter.notifyDataSetChanged();
    if(result) {
        try {
            dataPath = objectToFile(arrayList);
        } catch (IOException e) {
            e.printStackTrace();
        }
    } else {
        Toast.makeText(getApplicationContext(), "Unable to fetch data from server", Toast.LENGTH_LONG).show();
    }
}

अब आप जब चाहें फ़ाइल से अभिनेताओं की सूची प्राप्त कर सकते हैं, इसका उपयोग कर सकते हैं

try {
    actorsList = (ArrayList<Actors>)objectFromFile(dataPath);
} catch (IOException e) {
    e.printStackTrace();
} catch (ClassNotFoundException e) {
    e.printStackTrace();
}

यदि आप एप्लिकेशन को बंद करने के बाद फ़ाइल का पथ सहेजना चाहते हैं, तो आपको डेटापाथ स्ट्रिंग (और एप्लिकेशन प्रारंभ होने पर लोड) को सहेजना होगा, उदाहरण के लिए, SharedPreferences का उपयोग करना।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQLite ने 14 . का त्रुटि कोड लौटाया

  2. SQLite में 4 सारणीबद्ध आउटपुट मोड

  3. SQLite दिनांक/समय कार्यों के लिए मान्य संशोधक

  4. SQLite SUM

  5. SQLite में एक अस्थायी तालिका बनाएँ