android的第三种存储方式,外部存储,也就是存储进SD卡中
-------------------------------------------------------------------------------------
输出存储代码:
//外部存储(即往手机SD卡里面存储)
//1.判断外部存储设备是否可用
//Environment是android对外部设备的一个抽象封装,里面有许多关于SD卡此类外部设备的方法和属性使用
//getExternalStorageState()获取SD卡的状态,返回一个字符串
//Environment.MEDIA_MOUNTED 表示SD卡可用的常量
Log.i("MainActivity",Environment.getExternalStorageState());
if(!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
return;//若SD卡不可用 直接返回。
}
//获取SD卡根目录
File file = Environment.getExternalStorageDirectory();
//创建自己的文件
File myFile = new File(file, "myFile.txt");
//进行IO操作存储 数据(此处就不判断文件是否存在等因素了)
FileOutputStream fos = null;
try {
fos = new FileOutputStream(myFile);
//进行IO存储(简单的存储一下,不模拟复杂的方式了)
Log.i("MainActivity","---------->");
fos.write("我是通过外部存储方式存储进来的内容".getBytes());
} catch (Exception e) {
e.printStackTrace();
}finally{
if(fos!=null){
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
存储的 文件保存路径:
android 4.0之前的:mnt/sdcard
android 4.0之后的:storage/sdcard
要进行外部存储的操作,重要的两个操作就是Environment.getExternalStorageState()获取SD卡状态和Environment.getExternalStorageDirectory()获取SD卡根目录,接下来的操作就是正常的IO操作了。注意:对SD卡进行写操作得在AndroidMainFest文件里面添加权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
读取操作:
//判断外部存储设备的状态
if(!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
return ;
}
//获取SD卡根目录
File file = Environment.getExternalStorageDirectory();
//获取要操作的文件实例
File myFile = new File(file,"myFile.txt");
//判断文件是否存在
if(!myFile.exists()){
Log.i("MainActivity", "文件不存在");
return ;
}
//获取输入流
FileInputStream fis = null;
try {
fis = new FileInputStream(myFile);
//用来保存数据
StringBuilder sb = new StringBuilder();
//IO操作读取数据
byte[] buff = new byte[1024];
int len = 0;
while((len = fis.read(buff))!=-1){
sb.append(new String(buff,0,len));
}
Log.i("MainActivity", sb.toString());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if(fis!=null){
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
读取操作和写入代码几乎一样,只是方向不一样,就不多说了。注意的地方,读取SD卡也需要加入权限:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>,理论上来讲是需要的,但是我写这个例子的时候模拟器出了些问题,SD卡是通过CMD命令行添加进去的,然后测试的时候竟然不添加这条权限也可以读取到SD卡内容,具体什么原因还没有去细究,知道的人也可以留言告诉我
-------------------------------------------------------
原创,我在这里说明一下,这里的例子都是非常简单的例子,更适合初学者,只有先学会用,才能研究更深层次的东西,初学者千万不要陷入诸如每个参数到底是什么意思,这里不这样,如果那样会怎么样,这是无穷无尽的问题,非常影响入门,只有用熟悉之后,才更容易的去纠结这些东西,所以我在这里不写这些东西了。只适合初学者看看的例子。。。