Android查看手机内部储存目录及数据库文件[转]

本文转自:https://blog.csdn.net/msn465780/article/details/76813122

我们平时开发的时候会经常用到文件缓存,常用的是手机内部储存和手机外部储存,手机内部存储主要包括APP安装后的一些文件,外部储存就是大家通常可以使用的空间,用来存点图片电影之类的。

当需要快速读取的缓存文件一般放在内部储存中,因为内部储存比外部储存快,外部储存一般存一些比较大的文件,读写频率较低,外部存储容量也远远大于内部储存。

内部存储目录解释:

外部存储目录解释:

代码获取内部储存缓存目录如下:

 

String innerCachePath = context.getCacheDir().getAbsolutePath();

 

输出:/data/user/0/com.example.test/cache

代码获取外部储存目录如下:

 

String outerCachePath = context.getExternalCacheDir().getAbsolutePath();

输出:/storage/emulated/0/Android/data/com.example.test/cache

 

当然也可以指定其他目录,这样指定的好处是删除APP时就一起删除了

现在来看下手机的文件系统吧,由于市面上的手机都是上锁了的,是不能直接看到内部文件的,所以必须解锁和root,不过现在的手机真的是root很麻烦,这里我就不root,直接用模拟器,Android stuido自带的模拟器非常卡,这里用第三方的模拟器,比如  夜神、海马玩,都是比较好用的,模拟器一般是root过的,所以能看到内部文件。

注意:最新Android studio 3.0已经有更方便查看文件系统的方法了,手机不用root

http://blog.csdn.net/msn465780/article/details/78538225 点击打开链接

 

先开打DDMS,启动Android stuido,Tools→Android→Android Device Monitor

如图:

这时设备列表是空的,然后启动模拟器,如图:

此时检测到模拟器了,且看File Explorer,所有目录如图:

 

这时就可以慢慢查看里面的文件目录结构了,

接下来看下自己开发的APP的目录,打开data/data/,找到APP对应的包名,如图:

 

 

 

 

现在把想要的数据库文件导出来,用数据库工具查看,如图:

 

接下来这里使用sqlitestudio-3.1.1来查看导出的数据库,工具下载链接,有不同系统的版本哦,不过这里呢以win为例,

https://sqlitestudio.pl/index.rvt

点击打开链接

下载后解压,双击SQLiteStudio.exe 打开工具,左上角点击数据库——添加数据库,把刚才的数据库文件添加进来,如图:

此时就可以慢慢查看了,这里可以看到有多少表,表的数据结构,表的数据,如图:

当然还有其他工具,比如SQLiteDatabaseBrowser,用法同理,

我把工具传到CSDN上了,这里是链接地址:

http://download.csdn.net/detail/msn465780/9923570

点击打开链接

http://download.csdn.net/detail/msn465780/9923576

点击打开链接

现在又可以愉快玩耍了大笑

Android中,要在手机内部存储中创建数据库文件,通常我们会使用SQLite,它是轻量级的关系型数据库管理系统。以下是步骤: 1. **添加依赖**:在AndroidManifest.xml中添加对SQLite支持的权限,并在build.gradle(Module: app)中引入sqlite-jdbc库(如果你使用的是纯Java编写,不需要这个): ```xml <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <application> <meta-data android:name="android.database.sqlite.jdbcdriver" android:value="org.sqlite.JDBC" /> </application> ``` 2. **创建DatabaseHelper**:创建一个继承自SQLiteOpenHelper的类,它负责管理数据库的打开、关闭以及版本升级等操作: ```java public class DatabaseHelper extends SQLiteOpenHelper { private static final String DATABASE_NAME = "my_database.db"; private static final int DATABASE_VERSION = 1; public DatabaseHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } // ...其他方法,如onCreate(), onUpgrade()... } ``` 3. **onCreate()和onUpgrade()方法**:在这些方法中,你可以定义表结构并创建SQL语句。例如: ```java @Override public void onCreate(SQLiteDatabase db) { String createTableQuery = "CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, email TEXT)"; db.execSQL(createTableQuery); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("DROP TABLE IF EXISTS users"); // 如果有旧版本的数据表,先删除 onCreate(db); } ``` 4. **使用数据库**:通过DatabaseHelper实例获取数据库并执行读写操作: ```java DatabaseHelper dbHelper = new DatabaseHelper(getBaseContext()); SQLiteDatabase db = dbHelper.getWritableDatabase(); // 插入数据 String insertQuery = "INSERT INTO users (name, email) VALUES (?, ?)"; ContentValues contentValues = new ContentValues(); contentValues.put("name", "John Doe"); contentValues.put("email", "john.doe@example.com"); db.insert("users", null, contentValues); // 查询数据 Cursor cursor = db.rawQuery("SELECT * FROM users WHERE id = ?", new String[] { "1" }); if (cursor.moveToFirst()) { String name = cursor.getString(cursor.getColumnIndex("name")); String email = cursor.getString(cursor.getColumnIndex("email")); // 使用数据 } cursor.close(); db.close(); ``` 5. **注意权限**:确保在运行时请求了读写外部存储的权限。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值