I have a similar scenario, I zipped all the files on a single zip and stored it on the res/raw folder. Then on the first startup I extract all the files to the app's internal storage.
public static void unzipFiles(Context context, int file) {
InputStream stream;
context.getFilesDir().mkdirs();
String path = context.getFilesDir().getAbsolutePath();
try {
stream = context.getResources().openRawResource(file);
if (stream == null) {
throw new RuntimeException("Cannot load " + file + " file from raw folder");
}
ZipInputStream zis = new ZipInputStream(stream);
ZipEntry entry;
while ((entry = zis.getNextEntry()) != null) {
if (entry.isDirectory()) {
File f = new File(path, entry.getName());
if (!f.exists()) {
f.mkdirs();
}
} else {
int size;
byte[] buffer = new byte[2048];
File f = new File(path, entry.getName());
FileOutputStream fos = new FileOutputStream(f);
BufferedOutputStream bos = new BufferedOutputStream(fos, buffer.length);
while ((size = zis.read(buffer, 0, buffer.length)) != -1) {
bos.write(buffer, 0, size);
}
bos.flush();
bos.close();
}
}
} catch (IOException e) {
throw new RuntimeException("Cannot unzip '" + file + "'", e);
}
}