android存储文件到sdcard下

1
FileOutputStream out = content.openFileOutput(path, Context.MODE_PRIVATE);

以上代码再加上io流操作能够实现存储文件到data\data\你的项目完整包名\files目录下。如果要存储文件到sdcard目录下,就得用另外的方法了。

在sdk1.5r3以上的版本先在AndroidManifest.xml文件中加入以下配置:

1
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>

以存储一个xml文件到sdcard\test 目录下为例,xml的操作使用的是dmo4j,xml的操作请参考有关资料,也可以将xml文件换成其他文件,用OutputStreamWriter代替XMLWriter就能写入其他种类的文件了:

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
FileOutputStream out = null;  
XMLWriter writer = null;

try {
// 判断sdcard是否可用
if (Environment.MEDIA_MOUNTED.equals(Environment
.getExternalStorageState())) {
String path = "/sdcard/test/";
File dirPath = new File(path);
File xml = new File(path + new Date().getTime() + ".xml");
//必须先创建目录才能创建文件
//目录不存在就创建
if (!dirPath.exists()) {
dirPath.mkdir();
}
// 文件不存在就创建文件
if (!xml.exists()) {
xml.createNewFile();
}

out = new FileOutputStream(xml);
// 构造一个输出格式化对象
OutputFormat opt = new OutputFormat(" ", true, "UTF-8");

// 构造输出XML文档对象
writer = new XMLWriter(out, opt);

writer.write(document);

}else{
Toast.makeText(this, "请插入SD卡!", Toast.LENGTH_LONG).show();
}
} catch (Exception e) {
e.printStackTrace();
}finally{
try{
if (writer != null) {
writer.close();
}
if (out != null) {
out.close();
}
}catch(IOException e){
e.printStackTrace();
}
}