सवाल एंड्रॉइड एप्लिकेशन की 'होम' डेटा निर्देशिका प्राप्त करें


जब कोई ऐप आंतरिक मेमोरी को लिखता है तो डिफ़ॉल्ट 'होम' निर्देशिका से संबंधित एक साधारण सवाल। डिफ़ॉल्ट रूप से, बनाई गई किसी भी फाइल को ओएस (2.2) द्वारा रखा जाता है:

/data/data/your.package/files

फ़ाइलों में पढ़ने पर, उचित संदर्भ में रखते हुए, वही डिफ़ॉल्ट का उपयोग किया जाता है openFileInput(), openFileOutput()। लेकिन अगर मुझे फ़ाइल अस्तित्व की जांच करने की आवश्यकता है, उदाहरण के लिए, फ़ाइल वर्ग का उपयोग करके, मुझे कन्स्ट्रक्टर में पूरा पथ निर्दिष्ट करने की आवश्यकता है।

मैं देखता हूँ Environment.getDataDirectory() (रिटर्न /data), Environment.getRootDirectory() (रिटर्न /system), आदि, लेकिन ऐप की 'होम' निर्देशिका प्राप्त करने से संबंधित कुछ भी नहीं।

यह एक बड़ा सौदा नहीं है, लेकिन मैं फ़ाइल के उपयोग के लिए अपने ऐप में पूर्ण पथ को कड़ी-कोड नहीं करना चाहूंगा (पैकेज नाम परिवर्तन कहें, भविष्य में ओएस रिलीज में पथ परिवर्तन कहें) यदि संदर्भ देने का कोई तरीका है ऐप की 'होम' निर्देशिका प्रोग्रामेटिक रूप से।


44
2018-01-19 18:52


मूल


सम्बंधित stackoverflow.com/questions/5527764/get-application-directory - Ciro Santilli 新疆改造中心 六四事件 法轮功


जवाब:


बेशक, कभी विफल नहीं होता है। उपर्युक्त प्रश्न पोस्ट करने के एक मिनट के बारे में समाधान मिला ... उन लोगों के लिए समाधान जो एक ही समस्या हो सकते हैं:

ContextWrapper.getFilesDir()

मिल गया यहाँ


85
2018-01-19 18:54



यह रिटर्न /data/data/<homeAppDir>/files, लेकिन इस "फाइल" के साथ पथ कैसे प्राप्त करें? - Prizoff
@Prizoff Context.getAplicationInfo () का उपयोग करें। डेटा डीआईआर के अनुसार केविन का जवाब नीचे - David Snabel-Caunt
सही तरीका है: context.getAplicationContext ()। GetFilesDir () - David
उद्धरण: "बेशक, कभी विफल नहीं होता" पूरी तरह से सच नहीं है। उन्होंने एंड्रॉइड 4.4 में कई दौड़ की स्थिति तय की ... (देखें code.google.com/p/android/issues/detail?id=8886) - Michel
@MooingDuck यह बहु-उपयोगकर्ता सुविधा की वजह से है। android.stackexchange.com/questions/48393/... - TigerHix


तुम कोशिश कर सकते हो Context.getApplicationInfo().dataDir यदि आप पैकेज के लगातार डेटा फ़ोल्डर चाहते हैं।

getFilesDir() इसका एक सबूत देता है।


33
2017-10-09 03:42



यह मेरे Google Nexus 6 पर "/ data / user / 0 / <homeAppDir>" लौटा रहा है, जो गलत फ़ोल्डर है। - Mooing Duck


आवेदन पैकेज में फ़ाइल का मार्ग प्राप्त करने के लिए;

ContextWrapper c = new ContextWrapper(this);
Toast.makeText(this, c.getFilesDir().getPath(), Toast.LENGTH_LONG).show();

13
2017-09-12 07:49