Copiando toda la carpeta con su contenido de los activos a los archivos internos de la aplicación /
Por favor, sugiéreme la mejor manera de copiar una carpeta de los activos a / data / data / my_app_pkg / files.
La carpeta de activos (www) contiene archivos y subcarpetas. Que quiero copiar completamente a los archivos / de mi ruta de la aplicación interna mencionada.
- Cómo copiar archivos de la carpeta 'assets' a sdcard?
- Copiar carpetas en / data / data a sdcard y viceversa
- Archivos de copia del emulador android en la partición del sistema
- Tome la copia de seguridad de todos los archivos de instalación de apk en sdcard de forma programada en android
- ¿Cómo puedo transferir un dispositivo de prueba de base de datos al dispositivo desde mi aplicación de prueba de unidad
Soy capaz de copiar un archivo de los activos a los archivos de la aplicación interna / ruta, pero no puede hacer lo mismo en caso de copiar la carpeta, incluso assetmanager.list no me está ayudando, ya que es copiar sólo los archivos, pero no Los directorios / subcarpetas.
Por favor amablemente me sugieren la mejor manera de hacer lo que quiero
Espero que el uso completo a usted bajo el código: –
Copia los archivos de una carpeta de la tarjeta SD en otra carpeta de la tarjeta SD
Bienes
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(); } }
Espero que esto ayude
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(); }