Soru Android Uygulamanın 'Ev' Veri Dizini Al


Bir uygulama dahili belleğe yazdığında varsayılan 'ev' dizini ile ilgili basit bir soru. Varsayılan olarak, oluşturulan tüm dosyalar OS (2.2) tarafından yerleştirilir:

/data/data/your.package/files

Dosyalarda okurken, uygun içeriğe bağlı olarak aynı varsayılan kullanılır. openFileInput(), openFileOutput(). Ancak dosya varlığını kontrol etmem gerekirse, örneğin, File sınıfını kullanarak yapıcıdaki tüm yolu belirtmem gerekiyor.

Görüyorum orada Environment.getDataDirectory() (döner /data), Environment.getRootDirectory() (döner /system), vb, ama uygulamanın 'ev' dizini almakla ilgili hiçbir şey.

Bu büyük bir anlaşma değil, ama benim başvurmak için bir yol varsa, benim uygulama için File (paket adı değişiklikleri, gelecekteki bir işletim sistemi sürümünde yol değişiklikleri diyelim) kullanmak için tam bir kod zor değil. uygulamanın 'ev' dizini programatik olarak.


44
2018-01-19 18:52


Menşei


ilgili stackoverflow.com/questions/5527764/get-application-directory - Ciro Santilli 新疆改造中心 六四事件 法轮功


Cevaplar:


Tabii ki asla başarısız olmaz. Yukarıdaki soruyu yayınladıktan yaklaşık bir dakika sonra çözümü buldu ... aynı sorunu yaşayabilenler için çözüm:

ContextWrapper.getFilesDir()

Bulunan İşte.


85
2018-01-19 18:54



Bu döner /data/data/<homeAppDir>/files, ama bu "dosyalar" ile nasıl yollanır? - Prizoff
@Prizoff Kullanım Context.getApplicationInfo (). DataDir, başı olarak Kevin'ın cevabı aşağıda - David Snabel-Caunt
Doğru yol şudur: context.getApplicationContext (). GetFilesDir () - David
Alıntı: "Tabii ki asla başarısız olmaz" tam olarak doğru değildir. Android 4.4'te bir dizi yarış koşulunu düzelttiler ... (bkz. code.google.com/p/android/issues/detail?id=8886) - Michel
@MooingDuck Bu çoklu kullanıcı özelliği nedeniyle. android.stackexchange.com/questions/48393/... - TigerHix


Deneyebilirsin Context.getApplicationInfo().dataDir Paketin kalıcı veri klasörünü istiyorsanız.

getFilesDir() bunun bir alt kökünü döndürür.


33
2017-10-09 03:42



Bu, Google Nexus 6’mdaki "/ data / user / 0 / <homeAppDir>" ı döndürüyor, bu da yanlış klasör. - Mooing Duck


Uygulama paketindeki dosya yolunu almak için;

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

13
2017-09-12 07:49