本文实例讲述了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程序设计有所帮助。