Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रणाली >> Android

Android स्टोरेज के लिए आपका गाइड: विकास, प्रकार, और सर्वोत्तम अभ्यास

स्टोरेज वह चीज है जिसके बारे में हम सभी जानते हैं, लेकिन हमेशा इसे हल्के में लेते हैं। बहुत समय पहले नहीं, स्टोरेज क्षमता में हर छलांग वृद्धिशील थी और असंभव प्रतीत होती थी। आजकल, हम अपने उपकरणों में इसके कितना होने पर दूसरा विचार नहीं देते (और अंतर के बारे में कम परवाह नहीं कर सकते)।

एक बड़ा मुद्दा यह होगा कि मेमोरी में क्या संग्रहीत है, इसके विकास को देखा जाए। स्मार्टफोन से पहले, हम कभी-कभार एक-दो फोटो, कुछ गेम और ढेर सारे टेक्स्ट मैसेज सहेजते थे। लेकिन अब, किसी भी मानक फोन में एप्लिकेशन, दस्तावेज़, फोटो, वीडियो, संगीत फ़ाइलें, और बहुत कुछ का मिश्रण होगा। आइए जानें कि हम अपने एप्लिकेशन के लिए डिवाइस के स्टोरेज स्पेस का उपयोग कैसे कर सकते हैं।

इस लेख में हम क्या कवर करने जा रहे हैं:

  1. Android फोन पर स्टोरेज के विभिन्न प्रकार
  2. स्टोरेज के प्रकारों के बीच अंतर
  3. अपने एप्लिकेशन में स्टोरेज का उपयोग कैसे करें

प्रत्येक एप्लिकेशन की दो अलग-अलग प्रकार के स्टोरेज तक पहुंच होती है: आंतरिक और बाहरी। इन दो प्रकार के स्टोरेज के बीच बड़े अंतर हैं, और इन्हें जानने से आपको अपना अगला एप्लिकेशन डिजाइन करते समय मदद मिलेगी।

शुरू करने से पहले, स्टोरेज और कैश के बारे में एक बात कही जानी चाहिए। स्टोरेज उन चीजों के लिए है जिन्हें आप लगातार सहेजना चाहते हैं, जबकि कैश चीजों को अस्थायी रूप से सहेजने के लिए है।

Android स्टोरेज के लिए आपका गाइड: विकास, प्रकार, और सर्वोत्तम अभ्यास
फोटो Erda Estremera / Unsplash द्वारा

आंतरिक स्टोरेज

जब प्रत्येक एप्लिकेशन ऑपरेटिंग सिस्टम पर चलता है, तो इसका अपना आंतरिक स्टोरेज होता है। यह स्टोरेज निजी है और केवल एप्लिकेशन के उपयोग के लिए है। अर्थात, अन्य एप्लिकेशन इसे एक्सेस नहीं कर सकते, और न ही उपयोगकर्ता। आंतरिक स्टोरेज का उपयोग करते समय ध्यान रखने वाली एक और बात इसकी उपलब्धता है। बाहरी स्टोरेज के विपरीत, आंतरिक स्टोरेज आपके एप्लिकेशन के लिए हमेशा उपलब्ध होता है।

हालांकि, इस स्टोरेज का उपयोग करने के नुकसान भी हैं। यदि उपयोगकर्ता एप्लिकेशन को हटा देता है, तो आपके ऐप के आंतरिक स्टोरेज में संग्रहीत सभी डेटा भी हटा दिया जाता है। कल्पना करें कि क्या होगा यदि आपने अपने फोन पर एक गेम इंस्टॉल किया और कहीं आगे जाकर इसे हटाने का फैसला किया। यदि आप कभी गेम को फिर से इंस्टॉल करते हैं तो आप अपनी गेम प्रगति को सहेजना चाहेंगे।

तो, हम आंतरिक स्टोरेज में एक फ़ाइल कैसे सहेजते हैं?

public void saveFileInternalStorage() { String FILENAME = "hello_world_file"; String inputToFile = "Hello From Internal Storage!"; try { FileOutputStream fileOutputStream = openFileOutput(FILENAME, Context.MODE_PRIVATE); fileOutputStream.write(inputToFile.getBytes()); fileOutputStream.close(); Toast.makeText(getApplicationContext(), "File " + FILENAME + " has been saved successfully", Toast.LENGTH_SHORT).show(); } catch (FileNotFoundException e) { e.printStackTrace(); Toast.makeText(getApplicationContext(), "File " + FILENAME + " has not been saved successfully due to an exception " + e.getLocalizedMessage(), Toast.LENGTH_SHORT).show(); } catch (IOException e) { e.printStackTrace(); Toast.makeText(getApplicationContext(), "File " + FILENAME + " has not been saved successfully due to an exception " + e.getLocalizedMessage(), Toast.LENGTH_SHORT).show(); } }
hello_world_file नामक फ़ाइल सहेजना

जैसा कि आप कोड उदाहरण में देख सकते हैं, हम hello_world_file नामक एक फ़ाइल सहेज रहे हैं जिसमें टेक्स्ट है, "Hello From Internal Storage!"। मैंने सिर्फ उन अपवादों को प्रदर्शित करने के लिए दो कैच क्लॉज बनाए हैं जो ऐसा करने का प्रयास करते समय हो सकते हैं, लेकिन आप उन्हें एक कैच क्लॉज में सामान्य Exception ऑब्जेक्ट के साथ कम कर सकते हैं।

ध्यान दें कि openFileOutput मेथड फ़ाइल को खोलेगा यदि यह पहले से मौजूद है, लेकिन यदि नहीं, तो इसे बनाएगा। इस मेथड का दूसरा पैरामीटर फ़ाइल मोड है। यह पैरामीटर फ़ाइल के दायरे और उस तक पहुंच को नामित करता है। डिफ़ॉल्ट मान MODE_PRIVATE है, जो फ़ाइल को केवल आपके एप्लिकेशन के लिए सुलभ बनाता है।

इस पैरामीटर के अन्य दो मान MODE_WORLD_READABLE और MODE_WORLD_WRITEABLE हैं, लेकिन वे API 17 के बाद से डिप्रिकेटेड हैं। अन्य एप्लिकेशन के साथ निजी फ़ाइलें साझा करना एक अलग तर्क सेट का उपयोग करता है जिसके बारे में आप यहां और पढ़ सकते हैं। अंत में, फ़ाइल में लिखते समय, हम अपने स्ट्रिंग को बाइट्स में परिवर्तित करते हैं और अंत में फ़ाइल को बंद करना सुनिश्चित करते हैं।

Android स्टोरेज के लिए आपका गाइड: विकास, प्रकार, और सर्वोत्तम अभ्यास
फोटो Markus Spiske / Unsplash द्वारा

बाहरी स्टोरेज

नाम से विपरीत, यह स्टोरेज इस तथ्य द्वारा परिभाषित है कि यह हमेशा सुलभ नहीं है। इसका मतलब यह हो सकता है कि यह एक बाहरी SD कार्ड (सेकेंडरी बाहरी स्टोरेज) हो सकता है, लेकिन यह डिवाइस पर पाया जाने वाला स्टोरेज भी हो सकता है (प्राइमरी बाहरी स्टोरेज)।

बात को स्पष्ट करने के लिए, बाहरी स्टोरेज वह स्टोरेज है जिसे एक्सेस किया जा सकता है जब आप अपने डिवाइस को USB केबल के माध्यम से कंप्यूटर से जोड़ते हैं। जैसा कि आपने अनुमान लगाया होगा, इस प्रकार के स्टोरेज में संग्रहीत कोई भी चीज आपके डिवाइस पर अन्य एप्लिकेशन के लिए सुलभ है, लेकिन एप्लिकेशन को अनइंस्टॉल करने पर रखा जाएगा।

इससे पहले कि हम बाहरी स्टोरेज में फ़ाइलें सहेजने का प्रदर्शन कर सकें, हमें दो चीजें करने की आवश्यकता है:

  1. सुनिश्चित करें कि फ़ाइल सहेजने के लिए वहां पर्याप्त स्थान है
  2. रनटाइम के दौरान अनुमति मांगें

यह सुनिश्चित करने के लिए कि पर्याप्त स्टोरेज स्थान है, निम्नलिखित कोड लाइनों की आवश्यकता होती है:

//Check if you can read/write to external storage public boolean isExternalStorageWritable() { String state = Environment.getExternalStorageState(); if (Environment.MEDIA_MOUNTED.equals(state)) { return true; } return false; }
जांचें कि क्या हम बाहरी स्टोरेज में लिख और पढ़ सकते हैं

बाहरी स्टोरेज तक पहुंच प्राप्त करने के लिए, हमें अपने AndroidManifest.xml में निम्नलिखित अनुमति जोड़ने की आवश्यकता है:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
बाहरी स्टोरेज लिखने की अनुमति

इसके अलावा, चूंकि API 23, खतरनाक अनुमतियां इंस्टॉल समय के दौरान अधिकृत नहीं हैं, बल्कि रनटाइम के दौरान हैं। बाहरी स्टोरेज में लिखना उनमें से एक के रूप में वर्गीकृत है, इसलिए हमें उपयोगकर्ता को यह तय करने की अनुमति देने के लिए तर्क जोड़ने की आवश्यकता है कि एप्लिकेशन को अनुमति दी जाए या नहीं।

public void saveFileExternalStorage(View view) { if (isExternalStorageWritable()) { if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) { writeFileToExternalStorage(); } else{ ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 0); } } } @Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { switch (requestCode) { case 0: { writeFileToExternalStorage(); break; } } }
जांचें कि क्या उपयोगकर्ता ने अनुमति दी है

हमारा writeFileToExternalStorage इस तरह दिखता है:

public void writeFileToExternalStorage() { String root = Environment.getExternalStorageDirectory().toString(); File myDir = new File(root + "/saved_files"); if (!myDir.exists()) { myDir.mkdirs(); } try { File file = new File(myDir, "myfile.txt"); FileOutputStream out = new FileOutputStream(file); out.write(inputToFile.getBytes()); out.close(); Toast.makeText(getApplicationContext(), "File myfile.txt" + " has been saved successfully to external storage", Toast.LENGTH_SHORT).show(); } catch (Exception e) { e.printStackTrace(); } }
बाहरी स्टोरेज में फ़ाइल लिखें

यदि आप यहां प्रस्तुत सभी कोड का एक उदाहरण देखना चाहते हैं, तो आप इस GitHub रिपॉजिटरी पर जा सकते हैं।

Android स्टोरेज के लिए आपका गाइड: विकास, प्रकार, और सर्वोत्तम अभ्यास
फोटो Steve Johnson / Unsplash द्वारा

जानना अच्छा है

ऊपर आपके एप्लिकेशन के लिए स्टोरेज के विभिन्न प्रकारों के साथ काम करने के सिर्फ दो सरल उदाहरण थे। चूंकि हम एक संसाधन से निपट रहे हैं जिसे सिस्टम प्रबंधित करता है, हमें इससे जुड़े व्यवहारों के बारे में भी पता होना चाहिए।

डिफ़ॉल्ट रूप से, आपका एप्लिकेशन आंतरिक स्टोरेज में इंस्टॉल होगा (internalOnly व्याख्या देखें), लेकिन API लेवल 8 से, आप अपने मैनिफेस्ट में एक विशेषता, installLocation, जोड़ सकते हैं जो आपके एप्लिकेशन को बाहरी स्टोरेज में इंस्टॉल करने देता है। ऐसा करने का एक कारण यह है कि यदि आपका एप्लिकेशन बहुत बड़ा है, और आप चाहेंगे कि उपयोगकर्ता इसे डिवाइस के बाहरी स्टोरेज पर इंस्टॉल करे क्योंकि वहां अधिक जगह है।

इस विशेषता के लिए तीन मान हैं:

  • auto - इसका मतलब है कि आपकी कोई विशेष प्राथमिकता नहीं है कि एप्लिकेशन कहां इंस्टॉल होगा। एप्लिकेशन आंतरिक स्टोरेज में इंस्टॉल करने का प्रयास करेगा, लेकिन अगर यह भरा हुआ है, तो यह इसे बाहरी स्टोरेज के अंदर इंस्टॉल करेगा
  • internalOnly - एप्लिकेशन केवल आंतरिक स्टोरेज में इंस्टॉल होगा, और यदि वहां पर्याप्त जगह नहीं है, तो यह इंस्टॉल नहीं होगा
  • preferExternal - इसका मतलब है कि आप चाहते हैं कि आपका एप्लिकेशन बाहरी स्टोरेज में इंस्टॉल हो, लेकिन यदि वहां पर्याप्त जगह नहीं है, तो यह आंतरिक रूप से इंस्टॉल होगा

auto और preferExternal दोनों विकल्पों के लिए, उपयोगकर्ता के पास एप्लिकेशन को बाहरी स्टोरेज से आंतरिक में, और इसके विपरीत ले जाने का विकल्प होता है।

ध्यान रखें कि एक बार जब उपयोगकर्ता अपने डिवाइस को कंप्यूटर से जोड़ता है और डेटा साझा करने के लिए इसे सक्षम करता है या SD कार्ड को अनमाउंट करता है, तो बाहरी स्टोरेज से चलने वाले सभी एप्लिकेशन नष्ट हो जाते हैं। यदि आपका एप्लिकेशन निम्नलिखित सुविधाओं में से किसी का उपयोग करता है, तो आपको इसे बाहरी स्टोरेज पर इंस्टॉल नहीं करना चाहिए:

विभिन्न सेवाएं (विशेष रूप से अलार्म सेवाएं), इनपुट मेथड इंजन, लाइव वॉलपेपर्स, एप्लिकेशन विजेट्स, अकाउंट मैनेजर, सिंक एडाप्टर्स, डिवाइस एडमिनिस्ट्रेटर्स और बूट पूर्ण के लिए सुनने वाले ब्रॉडकास्ट रिसीवर्स।
  1. एंड्रॉइड पर GIF फ़ाइल को वॉलपेपर के रूप में कैसे उपयोग करें एंड्रॉइड पर GIF फ़ाइल को वॉलपेपर के रूप में कैसे उपयोग करें

    जब आपके फोन पर वॉलपेपर की बात आती है, तो यह या तो स्टिल या लाइव वॉलपेपर हो सकता है। कुछ उपयोगकर्ता अपनी पर्सनल तस्वीर को वॉलपेपर के रूप में भी लगा सकते हैं। यदि आप कुछ अलग आज़माना चाहते हैं, तो अपने एंड्रॉइड डिवाइस पर GIF को वॉलपेपर के रूप में क्यों नहीं जोड़ते? आप अंततः पूरे दिन अपने पसंदीदा GIF को

  1. Android पर .estrongs फोल्डर को मास्टर करें: एक चरण-दर-चरण गाइड Android पर .estrongs फोल्डर को मास्टर करें: एक चरण-दर-चरण गाइड

    फाइल मैनेजर एप्लिकेशन Android फोन पर फाइलों और फोल्डर्स को प्रबंधित करने में काम आते हैं। एक स्थान से दूसरे स्थान पर फोल्डर बनाने, संपादित करने और ले जाने से लेकर अवांछित डेटा हटाने तक, एक फाइल मैनेजर सभी में मदद करता है। ES फाइल एक्सप्लोरर एक ऐसा एप्लिकेशन है जो फाइल का काम आसानी से करने की क्षमता

  1. क्या एंड्रॉइड का बिल्ट-इन फाइल मैनेजर फोन स्टोरेज को पर्याप्त रूप से प्रबंधित करता है? क्या एंड्रॉइड का बिल्ट-इन फाइल मैनेजर फोन स्टोरेज को पर्याप्त रूप से प्रबंधित करता है?

    प्रत्येक एंड्रॉइड फोन, चाहे वह स्टॉक एंड्रॉइड OS द्वारा संचालित हो या एंड्रॉइड ओपन सोर्स प्रोजेक्ट पर आधारित थर्ड-पार्टी ऑपरेटिंग सिस्टम, एक बिल्ट-इन फाइल मैनेजर ऐप के साथ आता है। यदि फाइल मैनेजर ऐप प्री-इंस्टॉल नहीं है, तो उपयोगकर्ता हमेशा प्ले स्टोर पर जा सकते हैं और थर्ड-पार्टी फाइल एक्सप्लोरर वि