获取 sqlite系统数据库路径

方式1:

ApkInfo apkInfo = new ResourceUtil(context).getApkInfo();

APP_PATH = new StringBuilder("/data/data/").append(apkInfo.packageName)

.toString();

SHARED_PREFS = APP_PATH + "/shared_prefs";

DATABASES = APP_PATH + "/databases/"+"database.db";

方式2:context.getDatabasePath("database.db");

例子:

private StringBuilder getFilePath( ){

StringBuilder filePathBuilder = new StringBuilder( );



// 返回通过Context.openFileOutput()创建和存储的文件系统的绝对路径,应用程序文件,这些文件会在程序被卸载的时候全部删掉。

filePathBuilder.append( "getFilesDir == " ).append( getFilesDir( ) ).append( "\n" );

// 返回应用程序指定的缓存目录,这些文件在设备内存不足时会优先被删除掉,所以存放在这里的文件是没有任何保障的,可能会随时丢掉。

filePathBuilder.append( "getCacheDir == " ).append( getCacheDir( ) ).append( "\n" );

// 这是一个可以存放你自己应用程序自定义的文件,你可以通过该方法返回的File实例来创建或者访问这个目录,注意该目录下的文件只有你自己的程序可以访问。

filePathBuilder.append( "getDir == " ).append( getDir("test.txt", Context.MODE_WORLD_WRITEABLE) ).append( "\n" );



/* 需要写文件权限 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> */

// 调用该方法会返回应用程序的外部文件系统(Environment.getExternalStorageDirectory())目录的绝对路径,它是用来存放应用的缓存文件,它和getCacheDir目录一样,目录下的文件都会在程序被卸载的时候被清除掉。 

filePathBuilder.append( "getExternalCacheDir == " ).append( getExternalCacheDir( ) ).append( "\n" );

// 这个目录是与应用程序相关的外部文件系统,它和getExternalCacheDir不一样的是只要应用程序存在它就会一直存在,这些文件只属于你的应用,不能被其它人访问。同样,这个目录下的文件在程序被卸载时也会被一同删除。

filePathBuilder.append( "getExternalFilesDir == " ).append( getExternalFilesDir( "/" ) ).append( "\n" );



/**

* 和上面的方法一样,只是返回的是其目录下某一类型的文件,这些类型可以是:

* Environment#DIRECTORY_MUSIC 音乐

    * Environment#DIRECTORY_PODCASTS 音频

    * Environment#DIRECTORY_RINGTONES 铃声

    * Environment#DIRECTORY_ALARMS 闹铃

    * Environment#DIRECTORY_NOTIFICATIONS 通知铃声

      * Environment#DIRECTORY_PICTURES 图片

    * Environment#DIRECTORY_MOVIES 视频



* */

filePathBuilder.append( "getExternalFilesDir == " ).append( getExternalFilesDir( Environment.DIRECTORY_PICTURES ) ).append( "\n" );



// 保存通过Context.openOrCreateDatabase 创建的数据库文件

filePathBuilder.append( "getDatabasePath == " ).append( getDatabasePath( DATA_BASE_NAME ) ).append( "\n" );

// 返回android 安装包的完整路径,这个包是一个zip的压缩文件,它包括应用程序的代码和assets文件

filePathBuilder.append( "getPackageCodePath == " ).append( getPackageCodePath( ) ).append( "\n" );

// 返回android 安装包的完整路径,这个包是一个ZIP的要锁文件,它包括应用程序的私有资源。

filePathBuilder.append( "getPackageResourcePath == " ).append( getPackageResourcePath( ) ).append( "\n" );

// 返回应用程序的OBB文件目录(如果有的话),注意如果该应用程序没有任何OBB文件,这个目录是不存在的。

filePathBuilder.append( "getObbDir == " ).append( getObbDir( ) ).append( "\n" );



return filePathBuilder;

}

结果:





Activity提供了getCacheDir()和getFilesDir()方法:

getCacheDir()方法用于获取/data/data//cache目录

getFilesDir()方法用于获取/data/data//files目录

将文件写入SD卡内:

获取SDCard的状态:

Environment.getExtemalStorageState()

EnvironmentMEDIA_MOUNTED手机装有SDCard,并且可以进行读写

获取SDCard的目录:Environment.getExtemalStorageDirectory()

File saveFile=new File("/sdcard/zhzhg.txt");

或:File sdCardDir=new File("/sdcard");//获取SD卡目录

File saveFile-new File(sdCardDir,"zhzhg.txt");

FileOutputStream outStream = new FileOutputStream(saveFile);

outStream.write("文件的读写".getBytes());

outStream.close();

目录文件替换:

/**

* 复制目录



* @param srcDir

*            源目录

* @param destDir

*            目标目录

* @param successMsg

*            复制成功的提示语

* @param failedMsg

*            复制失败的提示语

* @return 当复制成功时返回true, 否则返回false。

*/

private final boolean copyDir(String srcDir, String destDir,

String successMsg, String failedMsg) {

try {

FileUtils.copyDirectory(new File(srcDir), new File(destDir));

} catch (IOException e) {

e.printStackTrace();

// showToast(failedMsg);

return false;

}

// showToast(successMsg);

return true;

}

android context获取目录详解的更多相关文章

  1. Android本地化资源目录详解

    我们可以设想,有两个不同分辨率的手机(320*480和480*800)要使用一些图像资源,为了使图像不失真,就需要为不同分辨率的手机指定不同的图像,为此就需要建立不同的资源目录. 在res目录中建立了 ...

  2. Android jniLibs下目录详解(.so文件)

    http://www.jianshu.com/p/b758e36ae9b5 最近又研究了一下,参考了一下:三星/联发科等处理器规格表 更新时间:2017年5月手机CPU架构体系分类及各大厂商 PS:我 ...

  3. Android屏幕适配问题详解

    上篇-Android本地化资源目录详解 :http://www.cnblogs.com/steffen/p/3833048.html 单位: px(像素):屏幕上的点. in(英寸):长度单位. mm ...

  4. Android SDK 目录详解(转)

    Android SDK目录结构和工具介绍是本文要介绍的内容,主要是来了解并学习Android SDK的内容,具体关于Android SDK内容的详解来看本文. Android SDK目录下有很多文件夹 ...

  5. Android开发之MdiaPlayer详解

    Android开发之MdiaPlayer详解 MediaPlayer类可用于控制音频/视频文件或流的播放,我曾在<Android开发之基于Service的音乐播放器>一文中介绍过它的使用. ...

  6. 《Android NFC 开发实战详解 》简介+源码+样章+勘误ING

    <Android NFC 开发实战详解>简介+源码+样章+勘误ING SkySeraph Mar. 14th  2014 Email:skyseraph00@163.com 更多精彩请直接 ...

  7. 给 Android 开发者的 RxJava 详解

    我从去年开始使用 RxJava ,到现在一年多了.今年加入了 Flipboard 后,看到 Flipboard 的 Android 项目也在使用 RxJava ,并且使用的场景越来越多 .而最近这几个 ...

  8. Android中Intent组件详解

    Intent是不同组件之间相互通讯的纽带,封装了不同组件之间通讯的条件.Intent本身是定义为一个类别(Class),一个Intent对象表达一个目的(Goal)或期望(Expectation),叙 ...

  9. Android的init过程详解(一)

    Android的init过程详解(一) Android的init过程(二):初始化语言(init.rc)解析 本文使用的软件版本 Android:4.2.2 Linux内核:3.1.10 本文及后续几 ...

随机推荐

  1. Java关键字——native

    本篇博客我们将介绍Java中的一个关键字——native. native 关键字在 JDK 源码中很多类中都有,在 Object.java类中,其 getClass() 方法.hashCode()方法 ...

  2. 学习Javascript闭包(Closure)及几个经典面试题理解

    今天遇到一个面试题,结果让我百思不得其解.后来在查阅了各种文档后,理清了来龙去脉.让我们先来看看这道题: function Foo( ){ var i = 0; return function( ){ ...

  3. 无后台应用 Stash Backend

    Stash Backend 是Github上的开源项目 https://github.com/gaboratorium/stash,目的在于提供一套方便使用.方便部署的后台应用.特别适合为Web前端和 ...

  4. ubuntu下cmake 使用clang

    安装llvm.clang sudo apt-get install llvm clang clang命令会在/usr/bin/clang cmake配置交叉编译链 建立linux.toolchain. ...

  5. Redis的持久化机制包括RBD和AOF两种,对于这两种持久化方式各有优势

    RDB机制的策略 RDB持久化是指在指定的时间间隔内将内存中的数据和操作通过快照的方式保存到redis bin目录下的一个默认名为 dump.rdb的文件,可以通过配置设置自动的快照持久化的方式,我们 ...

  6. python爬微信公众号前10篇历史文章(3)-lxml&xpath初探

    理解lxml以及xpath 什么是lxml? python中用来处理XML和HTML的library.与其他相比,它能提供很好的性能, 并且它支持XPath. 具体可以查看官方文档->http: ...

  7. 笔记:MyBatis XML配置-typeAliases 内建别名表

    别名 映射的类型 _byte byte _long long _short short _int int _integer int _double double _float float _boole ...

  8. gulp和webpack之间的区别

    webpack 是一个打包工具 webpack 是用来把你的源文件打包成一个文件的,你做了一系列配置以后,可以用一句 webpack 实现打包的功能. webpack的作用是从若干个文件开始顺藤摸瓜, ...

  9. 【itchat】用Python玩耍微信

    [itchat] itchat是个基于网页版微信的python微信API.功能目前做到基本可以满足正常的消息收发,信息的获取等等.不过对于红包之类网页版微信不支持的功能,这个模块自然也就无法支持了. ...

  10. [poj1012]Joseph_Joseph

    Joseph 题目大意:给你2*k个人,前k个是好人,后k个是坏人,编号从1到2*k.每次从上一个死掉的人的下一个开始查m个人并将第m个人杀死.问最后剩下的全是好人的m是多少. 注释:$1\le k ...