Android开发对SD卡的读写操作

对于Android系统,用户数据一般存放在SD卡当中,经常会对SD卡进行读写操作。下面直奔主题。

首先很重要的是得获得对SD卡操作的权限,读写权限:

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

1.对SD卡操作首先获得SD卡的路径。一般有两种路径:mnt/sdcard和storage/sdcard.对于Android4.0而言,只有mnt/sdcard路径,另外还有一个路径sdcard是指向mnt/sdcard的软连接,即对sdcard的操作就是对mnt/sdcard操作,仅在mnt/sdcard当中显示;对于Android4.4的系统而言,mnt/sdcard是指向storage/sdcard的软连接,对mnt/sdcard的操作即是对storage/sdcard的操作,他们的文件结构会同步改变。对于4.0和4.4之间的Android系统,那就是一个转变的过程,就不在这里详细说明了。这里的demo是在Android4.4上进行的。获得SD卡路径方法如下:

String sdcardPath = Environment.getExternalStorageDirectory().getAbsolutePath();
打印出来的sdcardPath:/storage/sdcard。同getPath()方法返回相同结果。


2.在SD卡上创建新文件夹(目录):

private String createDir(String dirname)
	{
		String fileDir = sdcardPath+File.separator+dirname+File.separator;
		File file = new File(fileDir);
		boolean b = file.mkdirs();   //创建路径,成功返回true,失败或者文件路径已存在返回false。
		Log.i(tag, "create directory:"+fileDir);
		return fileDir;
	}
File创建路径还有一个方法mkdir(),从方法名就可以判断,该方法只能创建一个目录(文件夹),而mkdirs()可以创建多个嵌套路径(文件夹/文件夹),例如:dirname为“newDir”,两个方法都产生一个文件夹路径,当dirname为“newDir/newDir”时,方法mkdir()不会创建任何路径,而mkdirs()方法可以创建路径newDir/newDir。


3.从SD卡上删除文件夹。同删除文件的方法类似,只是在DDMS上对file explorer操作能够直接删除文件而不能直接删除空的文件夹。删除文件夹的前提是该文件夹为空。方法如下:

private boolean deleteDir(String dir)
	{
		File file = new File(sdcardPath+File.separator+dir);
		if(file.exists())
		{
			file.delete();       //文件夹必须为空 
			Log.i(tag, "delete dir success!");
			return true;
		}
		else
		{
			Log.i(tag, "dir didn't exist!");
			return false;
		}
	}


4.在SD卡上创建文件。代码如下:

private File createFile(String filedir,String filename)
	{
		String filePath = sdcardPath+File.separator+filedir+File.separator+filename;
		File file = new File(filePath);
		try {
			file.createNewFile();//成功返回true,文件存在或者为文件路径则返回false
		} catch (IOException e) {
			e.printStackTrace();
		}
		Log.i(tag, "filePath:"+filePath);
		return file;
	}
这里得说明,创建文件的前提是给定的路径(filedir)必须存在,否则无法成功创建文件。若是创建临时文件,则采用方法createTempFile()。

5.向SD卡写入数据。代码如下:

//将数据写入SD卡
	private boolean writeToSDcard(File file,String data)
	{
		try {
			OutputStream output = new FileOutputStream(file);
			output.write(data.getBytes());
			output.close();
			return true;
		}catch (IOException e) {
			e.printStackTrace();
			return false;
		}
	}
这里data是以String的形式,写入数据可以以任何形式。这里参数file采用上述创建的文件进行测试。将写入SD卡的文件通过DDMS pull到电脑上,可以查看数据。









  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值