2011-03-28 17 views

उत्तर

67
Environment.getExternalStorageDirectory().getAbsolutePath() 

आपको एसडीकार्ड का पूरा मार्ग देता है। फिर आप मानक जावा का उपयोग कर सामान्य फ़ाइल I/O संचालन कर सकते हैं।

String baseDir = Environment.getExternalStorageDirectory().getAbsolutePath(); 
String fileName = "myFile.txt"; 

// Not sure if the/is on the path or not 
File f = new File(baseDir + File.separator + fileName); 
f.write(...); 
f.flush(); 
f.close(); 

संपादित करें::

यहाँ एक फ़ाइल लिखने के लिए एक सरल उदाहरण है

उफ़ - आप को पढ़ने के लिए एक उदाहरण चाहता था ...

String baseDir = Environment.getExternalStorageDirectory().getAbsolutePath(); 
String fileName = "myFile.txt"; 

// Not sure if the/is on the path or not 
File f = new File(baseDir + File.Separator + fileName); 
FileInputStream fiStream = new FileInputStream(f); 

byte[] bytes; 

// You might not get the whole file, lookup File I/O examples for Java 
fiStream.read(bytes); 
fiStream.close(); 
+35

न अगर बाहरी मेमोरी माउंट है की जाँच करने के भूल जाते हैं: 'Environment.getExternalStorageState() बराबर (Environment.MEDIA_MOUNTED)' – Mannaz

+1

अच्छी टिप्पणी, मन्नज! बीटीडब्ल्यू, इन कॉलों का उपयोग करने के लिए आपको किस लाइब्रेरी को शामिल करने की आवश्यकता है? क्या यह किसी भी मौके से एंड्रॉइड.ओएस पर्यावरण है? – gonzobrains

+0

हां, आयात android.os.Environment; – debracey

34

फिर भी ध्यान है, कि getExternalStorageDirectory() कुछ फोनों पर ठीक से काम नहीं करेगा मेरे मोटोरोला रेजर मैक्सएक्स, क्योंकि इसमें 2 कार्ड्स/एमएनटी/एसडीकार्ड और/एमएनटी/एसडीकार्ड-एक्सटी हैं - आंतरिक और बाहरी एसडी कार्ड सम्मान के लिए। आपको/mnt/sdcard केवल हर बार जवाब मिल जाएगा। Google को ऐसी स्थिति से निपटने का एक तरीका प्रदान करना होगा। चूंकि यह कई एसडी कार्ड जागरूक ऐप्स (यानी कार्ड बैकअप) प्रस्तुत करता है जो इन फोनों पर बुरी तरह विफल रहता है।

+0

गैलेक्सी टैब 2 जीटी-पी 3110 के साथ यहां ... मैं सोच रहा था कि मेरा डेटाबेस एसडी कार्ड में क्यों कॉपी नहीं किया गया था और मुझे अभी एहसास हुआ कि आपके जैसे 2 कार्ड हैं ... कुछ भी नहीं के लिए डिबगिंग के घंटों को बर्बाद कैसे करें! – Mirko

+1

यह संभव है कि बाह्य भंडारण के लिए आंतरिक भंडारण के विभाजन का उपयोग करने वाला डिवाइस एक एसडी कार्ड स्लॉट भी प्रदान कर सकता है। इस मामले में, एसडी कार्ड बाहरी भंडारण का हिस्सा नहीं है और आपका ऐप इसे एक्सेस नहीं कर सकता है (अतिरिक्त संग्रहण केवल उपयोगकर्ता द्वारा प्रदत्त मीडिया के लिए है जो सिस्टम स्कैन करता है)। –

+0

@ टिम यहाँ मुझे इस तरह की समस्या का सामना करना पड़ रहा है। नेक्सस 5 में केवल अंतर्निहित स्टोरेज है और माइक्रोमैक्स ए114 कैनवास 2.2 में विस्तारणीय स्टोरेज है। मेरी समस्या यह है कि जब मेरे ऐप से कुछ फाइलें डाउनलोड नहीं हो पाती हैं। और पर्यावरण। MEDIA_MOUNTED इसका क्या अर्थ है? –

0

प्रलेखन Environment.getExternalStorageDirectory() में वर्णित है:

Environment.getExternalStorageDirectory() वापसी प्राथमिक /बाह्य भंडारण निर्देशिका साझा की है।

यह है कि यह कैसे उपयोग करने के लिए एक छवि को पढ़ने का एक उदाहरण है:।

String fileName = "stored_image.jpg"; 
String baseDir = Environment.getExternalStorageDirectory().getAbsolutePath(); 
String pathDir = baseDir + "/Android/data/com.mypackage.myapplication/"; 

File f = new File(pathDir + File.separator + fileName); 

     if(f.exists()){ 
      Log.d("Application", "The file " + file.getName() + " exists!"; 
     }else{ 
      Log.d("Application", "The file no longer exists!"; 
     } 
+0

जैसा कि आपने उल्लेख किया है, 'getExternalStorageDirectory()' के साथ हम उपयोगकर्ता पसंदीदा स्टोरेज (जो आम तौर पर आंतरिक मेमोरी है) में नई निर्देशिका बना सकते हैं। तो, क्या होता है यदि डिफ़ॉल्ट संग्रहण 'बाहरी स्मृति' पर सेट किया गया है और यह ** पठनीय/लिखने योग्य ** नहीं है? क्या यह अपवाद फेंकता है? या यह स्वचालित रूप से 'आंतरिक भंडारण' में बना देगा? –

संबंधित मुद्दे