Android开发之sd卡存储和机身存储的路径获取

 

  

   开发过程中碰到将文件存储到手机中时,要先判断是否有sd卡,如下所示

// 判断是否有SD卡
	private static boolean ExistSDCard() {
		if (android.os.Environment.getExternalStorageState().equals(
				android.os.Environment.MEDIA_MOUNTED)) {
			return true;
		} else
			return false;
	}

 如果存在,则要获取sd卡的根目录路径,在目录下创建新的文件夹,sd卡根目录路径如下:

public static String SDCARDPATH = Environment.getExternalStorageDirectory()
			.getPath();

 

 

然后是将要复制的文件写到sd卡下新建的文件夹内,代码如下:

private void copyzipfileToLocalDir(final String path, final String filename) {
		File file = new File(path);
		if (file.exists()) {
			Uri uri = Uri.fromFile(file);
			Intent intent = new Intent(Intent.ACTION_VIEW, uri);
			intent.setClass(MainActivity.this, TestActivity.class);
			startActivity(intent);
			return;
		}
		pdlog = new ProgressDialog(this);
		pdlog.setMessage("正在复制文件...");
		pdlog.show();

		new Thread() {
			public void run() {
				try {
					InputStream input = getApplicationContext().getAssets()
							.open(filename);
					File f = new File(path);
					if (f.exists()) {
						return;
					}
					File file = f.getParentFile();
					// SDCARD/CN/ZNsql====================path
					if (!file.exists()) {
						file.mkdir();
					}
					FileOutputStream fout = new FileOutputStream(f);
					byte[] buff = new byte[1024];
					int len = 0;
					while ((len = input.read(buff)) > 0) {
						fout.write(buff, 0, len);
					}
					fout.close();
					input.close();

				} catch (Exception e) {
					e.printStackTrace();
				}
				handler.sendEmptyMessage(1);
			};
		}.start();
	}
	private Handler handler = new Handler() {

		public void handleMessage(android.os.Message msg) {
			switch (msg.what) {
			case 1:
				if (pdlog != null) {
					if (pdlog.isShowing()) {
						pdlog.cancel();
					}
					;
				}
// jump
				File file = new File(SDCARDPATH+ "androidtest.pdf");

				if (file.exists()) {
					Uri uri = Uri.fromFile(file);
					Intent intent = new Intent(Intent.ACTION_VIEW, uri);
					intent.setClass(MainActivity.this, TestActivity.class);
					startActivity(intent);
				}
				
				break;
			default:
				break;
			}
		};
	};

 

这样就将assets下的文件写入了外置sd卡,对于一些不支持外置存储卡的Android手机,我们可以将文件写入机身内存,也就是俗称的ROM中,RomPath= Environment.getDataDirectory().getPath();当判断到没有外置sd卡时就可以把path换成这个RomPath即可,这样就完成了将文件写入机身内存中。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值