SDcard存储,一般是用来存一些比较大的文件,类似图片,音频,视频等等。
QQ接收的文件一般存放tecent/filerev文件夹下,也是一种sdcard存储。
既然是访问sdcard,那么必定要涉及权限问题。
在maneifest文件中设置sdcard的读取,挂载权限。
<!-- 在SDCard中创建与删除文件权限 -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<!-- 往SDCard写入数据权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
在sdcard存储中,只需要注意两个地方:
1、权限添加
2、sdcard的状态
在使用外部存储时我们需要检测其状态,它可能被连接到计算机、丢失或者只读等。
获取sdcard的状态:Environment.getExternalStorageState()
要考虑这么个问题,如果sdcard还没挂载,对它是不能任何操作的,如果只有读的权
限,也是不能进行写入的,所以要获得的状态要匹配sdcard的状态。
我们来写入一个string。
String name="lpl";
if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))//sdcard 可读可写
{
File file=new File("mnt/sdcard/xxx.txt");
FileOutputStream fos=new FileOutputStream(file,true);
fos.write(name.getBytes());
fos.flush();
FileInputStream fis=new FileInputStream(file);
int len=0;
byte b[] =new byte[10];
StringBuffer buffer=new StringBuffer();
while((len=fis.read(b))!=-1)
{
buffer.append(new String(b,0,len));
}
Toast.makeText(getApplicationContext(), buffer, 0).show();
fis.close();
fos.close();
}else
{
Toast.makeText(getApplicationContext(), "Sdcard状态有问题", 0).show();
}
这里sdcard的目录是mnt/sdcard/…. 同时也要抛出io异常。