Копирование каталогов и файлов из папки res / raw на SD-карту – андроид

У меня есть папка, которая содержит несколько файлов и некоторые каталоги, которые мне нужно скопировать на карту SD / mnt / sdcard / Android / data / path, когда я запускаю приложение в первый раз, и, конечно, если уже не требуемая папка Нет в этом пути.

У меня будет эта папка внутри res / raw папки моего приложения.

Каковы пошаговые процедуры, которые мне нужно сделать, чтобы я мог скопировать папку и все ее содержимое из res / raw в указанный путь на SD-карте.

Буду признателен за любую оказанную помощь.

редактировать

Следующее – это решение, если оно помогает кому-то другому:

@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); copyFileOrDir("edu1");//directory name in assets } File sdCard = Environment.getExternalStorageDirectory(); private void copyFileOrDir(String path) { AssetManager assetManager = this.getAssets(); String assets[] = null; try { assets = assetManager.list(path); if (assets.length == 0) { copyFile(path); } else { File dir = new File (sdCard.getAbsolutePath() + "/" + "Android/data"); //String fullPath = "/data/data/" + this.getPackageName() + "/" + path;//path for storing internally to data/data //File dir = new File(fullPath); if (!dir.exists()){ System.out.println("Created directory"+sdCard.getAbsolutePath() + "/Android/data"); boolean result = dir.mkdir(); System.out.println("Result of directory creation"+result); } for (int i = 0; i < assets.length; ++i) { copyFileOrDir(path + "/" + assets[i]); } } } catch (IOException ex) { System.out.println("Exception in copyFileOrDir"+ex); } } private void copyFile(String filename) { AssetManager assetManager = this.getAssets(); InputStream in = null; OutputStream out = null; try { in = assetManager.open(filename); //String newFileName = "/data/data/" + this.getPackageName() + "/" + filename;//path for storing internally to data/data String newFileName = sdCard.getAbsolutePath() + "/Android/data/" + filename; out = new FileOutputStream(newFileName); byte[] buffer = new byte[1024]; int read; while ((read = in.read(buffer)) != -1) { out.write(buffer, 0, read); } in.close(); in = null; out.flush(); out.close(); out = null; } catch (Exception e) { System.out.println("Exception in copyFile"+e); } } } 

Я предлагаю вам хранить ваши файлы в активах. Следующий код может помочь вам скопировать содержимое из каталога ресурсов на SD-карту.

 public static void copyFile(Activity c, String filename) { AssetManager assetManager = c.getAssets(); InputStream in = null; OutputStream out = null; try { in = assetManager.open(filename); String newFileName = sdcardpath/filename; out = new FileOutputStream(newFileName); byte[] buffer = new byte[1024]; int read; while ((read = in.read(buffer)) != -1) { out.write(buffer, 0, read); } in.close(); in = null; out.flush(); out.close(); out = null; } catch (Exception e) { Utility.printLog("tag", e.getMessage()); }finally{ if(in!=null){ try { in.close(); } catch (IOException e) { printLog(TAG, "Exception while closing input stream",e); } } if(out!=null){ try { out.close(); } catch (IOException e) { printLog(TAG, "Exception while closing output stream",e); } } } }