2011-05-02 17 views
20

Öğeler klasörümden kopyalamak istediğim bir klasör yapısına sahibim. Ancak, mContext.getAssets(). Open() sadece bir dosya adı ister, sadece bir tek dosyayı kopyalamak için uygun olan bir InputStream döndürür. İhtiyacım olan şey, tüm dosyalar ve klasörler arasında tekrarlayabilmem ve hepsini kopyalayabilmem için klasörümdeki klasörden yapılmış bir Dosya.Uygulama paketindeki Android öğeleri klasörüne giden yol nasıl verilir

Bir File nesnesi oluşturabilmem için varlıklar klasörüne giden yolu nasıl alacağını bilen var mı?

Düzenleme: Bazı çalışmalardan sonra, bir File nesnesi oluşturabilmek için varlıkların/ve ham/klasörlerin mutlak yollarla dosyalara erişemediğiniz anlaşılıyor. Muhtemelen uygulama paketinin şifrelenmesi ile ilgilidir. Umarım birileri beni yanlış anlayabilir!

Nihai düzenleme: kadar) (açık)

private static final String[] DEFAULT_ALBUM_FILES = 
    {INTRO_TO_FLASHUM_DIR+"03 Never Can Say Goodbye.m4a", 
    INTRO_TO_FLASHUM_DIR+"11 Bossa Baroque.m4a", 
    INTRO_TO_FLASHUM_DIR+"intro fling.3gp"}; 

Daha sonra bu kopyalama yoluyla bireysel mContext.getAssets (kullanarak her dosyayı iterated. Ben fazladan varlık dosyaları tutmak için bir dize dizisi oluşturarak sona erdi InputStream'i edinin. Şu anda normal Dosya işlemlerini kullanarak varlıklarda bir klasörde yinelemenin mümkün olmadığını düşünüyorum.

+0

Ne denediniz mi? Bakınız: http://www.wiseandroid.com/post/2010/06/14/Android-Beginners-Intro-to-Resources-and-Assets.aspx – f20k

+0

Evet, bu tam olarak ne yaptığımı açıklıyor. – cdavidyoung

cevap

3

Bu klasörü/raw klasörünüze taşıyabilir misiniz? Sonra kullanabilirsiniz:

com.your.package:raw/yourFile 
Bunun gibi

: Burada

int resourceId = context.getResources().getIdentifier("com.your.package:raw/somefile.txt"); 
File f = new File(context.getResources().openRawResource(resourceId)); 

Ve biri varlıkları klasörle yapıyor:

Android Assets with sub folders

InputStream is = getAssets().open("subfolder/somefile.txt"); 
+0

Bu umut verici görünüyor. Ben bir deneyeceğim. Sonuçlar ile geri döneceğim. Teşekkürler! – cdavidyoung

+0

Ham klasör ayrıca mutlak yol referanslarına izin vermiyor gibi görünüyor. En azından ben bunu anlayamadım ... – cdavidyoung

+0

Elbette düzenlenmiş yanıtı – Blundell

-5

kullanın file:///android_asset varlık erişmek için klasörünü ve daha sonra alt klasörünüzü her zaman orada alabilirsiniz.

AssetManager assetManager = null; // null ??? Get the AssetManager here. 
     AssetFileDescriptor assetFileDescriptor = null; 
     try{ 
      assetFileDescriptor = assetManager.openFd("file:///android_asset/yourfolder/file"); 
       FileDescriptor fd = assetFileDescriptor.getFileDescriptor(); 
     } catch (Exception e){} 
+0

Korkarım "file: /// android_asset" işlevini nasıl kullanacağımı anlamıyorum. Bunu "Dosya dosyası = yeni Dosya (...);" biçiminde koyabilir misiniz? – cdavidyoung

+0

assetmanager öğesini alın, assetfiledescriptor öğesini alın, dosya_adıyı assetfiledescriptor'dan alın. – yogsma

+8

Ama sonra bir FileDescriptor'u bir Dosyaya nasıl dönüştürüyorsunuz? – cdavidyoung

4
  AssetManager am = con.getAssets();//u have get assets path from this code 

     InputStream inputStream = null; 

     inputStream = am.open("file.xml"); 

veya

String file_name="ur.xml" 

inputStream = am.open("foldername/"+ur); 
+0

mükemmel cevap teşekkür ederim :) +1 –

İlgili konular