List of files in assets folder and its subfolders
private boolean listAssetFiles(String path) { String [] list; try { list = getAssets().list(path); if (list.length > 0) { // This is a folder for (String file : list) { if (!listAssetFiles(path + "/" + file)) return false; else { // This is a file // TODO: add file name to an array list } } } } catch (IOException e) { return false; } return true; }
Call the listAssetFiles with the root folder name of your asset folder.
listAssetFiles("root_folder_name_in_assets");
If the root folder is the asset folder then call it with
listAssetFiles("");
try this it will work in your case
f = getAssets().list("");for(String f1 : f){ Log.v("names",f1);}
The above snippet will show the contents of the asset root.
For example... if below is the asset structure..
assets |__Dir1 |__Dir2 |__File1
Snippet's output will be ....Dir1 Dir2 File1
If you need the contents of the Directory Dir1
Pass the name of Directory in the list function.
f = getAssets().list("Dir1");
Hope This Help:
following code will copy all the folder and it's content and content of sub folder to sdcard location:
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(); }