2013-03-19 24 views
5

Lütfen bir klasörün/data/data/my_app_pkg/files klasörüne kopyalamanın en iyi yolunu öneriyorum.Klasörün içeriklerini içeriğindeki içeriğe kopyalama iç uygulama dosyaları/

Öğelerdeki (www) klasör, dosyaları ve alt klasörleri içerir. Ben belirtilen dahili uygulama yoluma/dosyalara tamamen kopyalamak istiyorum.

Öğeleri bir dosyadan iç uygulama dosyalarına/yoluna başarılı bir şekilde kopyalayabiliyorum, ancak kopyalama klasörü için aynı işlemi yapamıyorum bile, assetmanager.list bile bana yardımcı olmadığından dosyaları, ancak dizinleri/alt klasörleri değil.

nazikçe bana

+0

Lütfen karşılaştığınız sorunu açıklayın. – greenapps

cevap

5

Umut kodunun altına size tam kullanmak istediğini yapacak daha iyi bir yol önermek edin: -

Copy files from a folder of SD card into another folder of SD card

Varlıklar

  AssetManager am = con.getAssets("folder/file_name.xml"); 


public static void copyDirectoryOneLocationToAnotherLocation(File sourceLocation, File targetLocation) 
    throws IOException { 

if (sourceLocation.isDirectory()) { 
    if (!targetLocation.exists()) { 
     targetLocation.mkdir(); 
    } 

    String[] children = sourceLocation.list(); 
    for (int i = 0; i < sourceLocation.listFiles().length; i++) { 

     copyDirectoryOneLocationToAnotherLocation(new File(sourceLocation, children[i]), 
       new File(targetLocation, children[i])); 
    } 
} else { 

    InputStream in = new FileInputStream(sourceLocation); 

    OutputStream out = new FileOutputStream(targetLocation); 

    // Copy the bits from instream to outstream 
    byte[] buf = new byte[1024]; 
    int len; 
    while ((len = in.read(buf)) > 0) { 
     out.write(buf, 0, len); 
    } 
    in.close(); 
    out.close(); 
} 

} 
+1

Bu, AssetsManager'ı kullanmanız gereken öğelerden kopyalamaya yardımcı olmaz. – greenapps

+1

@greenapps Yanıtı düzenledim ve beni düzeltmek için teşekkürler !! – duggu

+0

@NarendraDroidWorm welcome – duggu

0

Umut bu yardımcı olacak

private void getAssetAppFolder(String dir) throws Exception{ 

     { 
      File f = new File(sdcardlocation + "/" + dir); 
      if (!f.exists() || !f.isDirectory()) 
       f.mkdirs(); 
     } 
     AssetManager am=getAssets(); 

     String [] aplist=am.list(dir); 

     for(String strf:aplist){ 
      try{ 
       InputStream is=am.open(dir+"/"+strf); 
       copyToDisk(dir,strf,is); 
      }catch(Exception ex){ 


       getAssetAppFolder(dir+"/"+strf); 
      } 
     } 



    } 


    public void copyToDisk(String dir,String name,InputStream is) throws IOException{ 
     int size; 
      byte[] buffer = new byte[2048]; 

      FileOutputStream fout = new FileOutputStream(sdcardlocation +"/"+dir+"/" +name); 
      BufferedOutputStream bufferOut = new BufferedOutputStream(fout, buffer.length); 

      while ((size = is.read(buffer, 0, buffer.length)) != -1) { 
       bufferOut.write(buffer, 0, size); 
      } 
      bufferOut.flush(); 
      bufferOut.close(); 
      is.close(); 
      fout.close(); 
    } 
İlgili konular