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

来源:https://blog.csdn.net/anjingshuai/article/details/84682779

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

  1. // 判断是否有SD卡

  2.  

    private static boolean ExistSDCard() {

  3.  

    if (android.os.Environment.getExternalStorageState().equals(

  4.  

    android.os.Environment.MEDIA_MOUNTED)) {

  5.  

    return true;

  6.  

    } else

  7.  

    return false;

  8.  

    }

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

  1. public static String SDCARDPATH = Environment.getExternalStorageDirectory()

  2.  

    .getPath();

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

  1. private void copyzipfileToLocalDir(final String path, final String filename) {

  2.  

    File file = new File(path);

  3.  

    if (file.exists()) {

  4.  

    Uri uri = Uri.fromFile(file);

  5.  

    Intent intent = new Intent(Intent.ACTION_VIEW, uri);

  6.  

    intent.setClass(MainActivity.this, TestActivity.class);

  7.  

    startActivity(intent);

  8.  

    return;

  9.  

    }

  10.  

    pdlog = new ProgressDialog(this);

  11.  

    pdlog.setMessage("正在复制文件...");

  12.  

    pdlog.show();

  13.  

  14.  

    new Thread() {

  15.  

    public void run() {

  16.  

    try {

  17.  

    InputStream input = getApplicationContext().getAssets()

  18.  

    .open(filename);

  19.  

    File f = new File(path);

  20.  

    if (f.exists()) {

  21.  

    return;

  22.  

    }

  23.  

    File file = f.getParentFile();

  24.  

    // SDCARD/CN/ZNsql====================path

  25.  

    if (!file.exists()) {

  26.  

    file.mkdir();

  27.  

    }

  28.  

    FileOutputStream fout = new FileOutputStream(f);

  29.  

    byte[] buff = new byte[1024];

  30.  

    int len = 0;

  31.  

    while ((len = input.read(buff)) > 0) {

  32.  

    fout.write(buff, 0, len);

  33.  

    }

  34.  

    fout.close();

  35.  

    input.close();

  36.  

  37.  

    } catch (Exception e) {

  38.  

    e.printStackTrace();

  39.  

    }

  40.  

    handler.sendEmptyMessage(1);

  41.  

    };

  42.  

    }.start();

  43.  

    }

  44.  

    private Handler handler = new Handler() {

  45.  

  46.  

    public void handleMessage(android.os.Message msg) {

  47.  

    switch (msg.what) {

  48.  

    case 1:

  49.  

    if (pdlog != null) {

  50.  

    if (pdlog.isShowing()) {

  51.  

    pdlog.cancel();

  52.  

    }

  53.  

    ;

  54.  

    }

  55.  

    // jump

  56.  

    File file = new File(SDCARDPATH+ "androidtest.pdf");

  57.  

  58.  

    if (file.exists()) {

  59.  

    Uri uri = Uri.fromFile(file);

  60.  

    Intent intent = new Intent(Intent.ACTION_VIEW, uri);

  61.  

    intent.setClass(MainActivity.this, TestActivity.class);

  62.  

    startActivity(intent);

  63.  

    }

  64.  

  65.  

    break;

  66.  

    default:

  67.  

    break;

  68.  

    }

  69.  

    };

  70.  

    };

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

原文地址:https://www.cnblogs.com/LiTZen/p/12188771.html

时间: 2024-10-24 01:21:56

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

Android入门开发之SD卡读写操作(转)

SD卡的读写是我们在开发android 应用程序过程中最常见的操作.下面介绍SD卡的读写操作方式: 1. 获取SD卡的根目录 [java] view plaincopy String  sdCardRoot = Environment.getExternalStorageDirectory().getAbsolutePath(); 2. 在SD卡上创建文件夹目录 [java] view plaincopy /** * 在SD卡上创建目录 */ public File createDirOnSDC

android开发之路11(用SharedPreferences存储数据)

Android平台给我们提供了一个SharedPreferences类,实际上SharedPreferences处理的就是一个key-value(键值对),它是 一个轻量级的存储类,特别适合用于保存软件配置参数及用户的偏好设置参数,比如登录时候的记住密码功能等.使用 SharedPreferences保存数据,实际上是用xml文件存放数据,文件存放在/data/data/<package name>/shared_prefs目录下 : 1.获取SharedPreferences对象的两种方式:

Android开发之Html类详解

在进行Android开发中经常回忽略Html类.这个类其实很简单,就是将HTML标签文本解析成普通的样式文本.下面就让我么看一下这个类的具体介绍. 类结构: java.lang.Object    ? android.text.Html 类概述: 这个类用于处理的HTML字符串并将其转换成可显示的样式文本.但并不是所有的HTML标记的支持. 公有方法: 说其简单是应为它就有四个方法: Public Methods static String escapeHtml(CharSequence tex

Android开发之assets目录下资源使用总结

预前知识: Android资源文件分类: Android资源文件大致可以分为两种: 第一种是res目录下存放的可编译的资源文件: 这种资源文件系统会在R.java里面自动生成该资源文件的ID,所以访问这种资源文件比较简单,通过R.XXX.ID即可: 第二种是assets目录下存放的原生资源文件: 因为系统在编译的时候不会编译assets下的资源文件,所以我们不能通过R.XXX.ID的方式访问它们.那我么能不能通过该资源的绝对路径去访问它们呢?因为apk安装之后会放在/data/app/**.ap

Android开发之View重写相关API-onLayout,onMeasure,MeasureSpec

 1.onLayout android.view.ViewGroup protected void onLayout(boolean changed, int l, int t, int r, int b) 执行layout操作时调用onLayout方法.View要给它的每个Child设定size和position.拥有Children的子类需要重写onLayout方法并且调用每个Child的layout方法. 参数changed表示view的size或position发生变化.参数l, t,

Android开发之SQLite数据库详解

Android开发之SQLite数据库详解 请尊重他人的劳动成果,转载请注明出处:Android开发之SQLite数据库详解 http://blog.csdn.net/fengyuzhengfan/article/details/40194393 Android系统集成了一个轻量级的数据库:SQLite, SQLite并不想成为像Oracle.MySQL那样的专业数据库.SQLite只是一个嵌入式的数据库引擎,专门适用于资源有限的设备上(如手机.PDA等)适量数据存取. 虽然SQLite支持绝大

Android开发之WebView详解

概述: 一个显示网页的视图.这个类是你可以滚动自己的Web浏览器或在你的Activity中简单地显示一些在线内容的基础.它使用了WebKit渲染引擎来显示网页,包括向前和向后导航的方法(通过历史记录),放大和缩小,执行文本搜索等. 需要注意的是:为了让你的应用能够使用WebView访问互联网和加载网页,你必须添加Internet的权限在Android Manifest文件中: <uses-permission android:name="android.permission.INTERNE

Android手机外置SD卡(TF卡)的获取方法

Android手机上的外置SD卡,起初的时候,即在Android出世的前几年,那时手机的存储是十分有限的,不像现在到处可见16G.32G和64G的存储,因而那时候的手机有的厂商允许插入外置的SD卡,此时这张卡仍处于手机的扩展部分.后来,随着手机的发展以及存储能力的增加,这张外置SD卡,逐渐成为了手机的一部分,不再允许可挺拔了,当然现在依然有的手机允许对存储进行拓展,比如三星等. 那张拓展的存储卡,现在叫做TF卡,且不是所有的手机都支持它,但是有时候有些奇葩需求偏要优先存储在TF卡里面,这叫不得不

Android开发之Buidler模式初探结合AlertDialog.Builder讲解

什么是Buidler模式呢?就是将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示.Builder模式是一步一步创建一个复杂的对象,它允许用户可以只通过指定复杂对象的类型和内容就可以构建它们. 那么要为何使用Buidler呢? 是为了将构建复杂对象的过程和它的部件分开因为一个复杂的对象,不但有很多大量组成部分,如AlertDialog对话框,有很多组成部件,比如Tittle,Message,icon,PositiveButton等等,但远不止这些,如何将这些部件装配成一个A