本文实例讲述了Android编程读取Assets所有文件(遍历每一个文件夹)并存入sdcard的方法。分享给大家供大家参考,具体如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
private void CopyAssets(String assetDir, String dir) { String[] files; try { // 获得Assets一共有几多文件 files = this .getResources().getAssets().list(assetDir); } catch (IOException e1) { return ; } File mWorkingPath = new File(dir); // 如果文件路径不存在 if (!mWorkingPath.exists()) { // 创建文件夹 if (!mWorkingPath.mkdirs()) { // 文件夹创建不成功时调用 } } for ( int i = 0 ; i < files.length; i++) { try { // 获得每个文件的名字 String fileName = files[i]; // 根据路径判断是文件夹还是文件 if (!fileName.contains( "." )) { if ( 0 == assetDir.length()) { CopyAssets(fileName, dir + fileName + "/" ); } else { CopyAssets(assetDir + "/" + fileName, dir + "/" + fileName + "/" ); } continue ; } File outFile = new File(mWorkingPath, fileName); if (outFile.exists()) outFile.delete(); InputStream in = null ; if ( 0 != assetDir.length()) in = getAssets().open(assetDir + "/" + fileName); else in = getAssets().open(fileName); OutputStream out = new FileOutputStream(outFile); // Transfer bytes from in to out byte [] buf = new byte [ 1024 ]; int len; while ((len = in.read(buf)) > 0 ) { out.write(buf, 0 , len); } in.close(); out.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } |
希望本文所述对大家Android程序设计有所帮助。