您的位置:首页 > 移动开发 > Android开发

Android——SdCard数据存储

2017-03-13 11:52 369 查看
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异常。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息