Android 对data/data/(your packagename)目录下的数据读写、删除操作

2023-10-27

一、数据存储

App自身的数据存储在/data/data/packagename/ ,目录下,大致结构如下图

这里写图片描述

Activity提供了getCacheDir()和getFilesDir()方法:
getCacheDir().getAbsolutePath()方法用于获取/data/data/packagename/cache目录

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

getFilesDir().getParent()方法用于获取/data/data/packagename目录

1、数据存储
Activity提供了openFileOutput()方法可以用于把数据输出到文件中,文件的输出目录在/data/data/packagename/files中

try {
FileOutputStream os = openFileOutput("tongsiw.txt",MODE_PRIVATE);
os.write("哈哈哈哈".getBytes());
os.close();
} catch (IOException e) {
 e.printStackTrace();
}

输出目录如图
这里写图片描述

openFileOutput()方法的第一参数用于指定文件名称,第二参数用于指定操作模式,有四种模式,分别为:
Context.MODE_PRIVATE
Context.MODE_APPEND
Context.MODE_WORLD_READABLE
Context.MODE_WORLD_WRITEABLE

Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容,如果想把新写入的内容追加到原文件中,可以使用Context.MODE_APPEND。

Context.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件。

Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用来控制其他应用是否有权限读写该文件。

MODE_WORLD_READABLE:表示该文件可以被其他应用读取;

MODE_WORLD_WRITEABLE:表示该文件可以被其他应用写入。

另外操作模式可以叠加,如:

FileOutputStream  os =  openFileOutput("tongsiw.txt",MODE_PRIVATE+MODE_APPEND);

2、文件读写操作

Activity提供了openFileInput()方法打开/data/data/packagename/files中的文件

  FileInputStream inputStream = openFileInput("tongsiw.txt");
            ByteArrayOutputStream outputStream = new  ByteArrayOutputStream();
            byte[] buffer = new byte[1024];
            int len = -1;
            while ((len = inputStream.read(buffer)) != -1) {
                outputStream.write(buffer, 0, len);
            }
            inputStream.close();
            outputStream.close();
            String s = outputStream.toString();
            Toast.makeText(this, s, 0).show();
        } catch (IOException e) {
            e.printStackTrace();
        }

二、数据删除

递归删除

/**递归删除*/
    public  void deleteFolder(File file) {
        if (!file.exists())
            return;

        if (file.isDirectory()) {
            File files[] = file.listFiles();
            for (int i = 0; i < files.length; i++) {
                deleteFolder(files[i]);
            }
        }
        file.delete();
    }

删除操作

  //删除配置文件目录shared_prefs;
  //路径:/data/data/packagename
  String path = getFilesDir().getParent();
  deleteFolder(new File(path + "/shared_prefs"));


  //清空缓存目录;
  //路径 /data/data/packagename/cache
  File file_cache = getCacheDir();
  deleteFolder(file_cache);

  //清空file目录;
  //路径 /data/data/packagename/files
  File file_file = getFilesDir();
  deleteFolder(file_file);

就到这了

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 对data/data/(your packagename)目录下的数据读写、删除操作 的相关文章

  • 在android 10中设置通知操作的背景颜色

    我已经做到了这一点图片链接 https i stack imgur com o0Cel jpg通过关注这篇文章https medium com dcostalloyd90 show incoming voip call notificati
  • 如何使用字符串搜索将一种布局膨胀为另一种布局

    如何将两者都加粗xml来自带有 switch case 的搜索字符串的字符串 我想更改每个 xml 字符串textview此更改将在按钮单击时发生 String strfistsearch mylist get 7 get data4 if
  • Android-使用 ViewHolder 和 AsyncTask 加载联系人-缩略图问题

    我正在创建一个自定义联系人应用程序 我使用带有 ViewHolder 设计模式的 ArrayAdapter 进行优化 由于加载缩略图需要花费大量时间 因此我使用 AsyncTask 类来加载图像 用于第一组联系人我的屏幕上 图片加载得很好
  • 如何使用 Gson 跳过空条目

    使用 Gson 反序列化 JSON 时 有没有办法跳过 JSON 数组中的空条目 text adsfsd title asdfsd null text adsfsd title asdfsd 生成的 List 有 3 个条目 第二个条目为空
  • ListView 滚动时隐藏和显示浮动按钮

    我正在我的应用程序中创建一个 listView 和一个浮动按钮 我希望根据滚动状态实现隐藏和返回的效果 当 的时候ListView滚动时按钮隐藏得很好 但是当滚动停止时按钮不会返回到其初始位置 有任何想法吗 My Code public c
  • Android模拟器收不到推送通知

    我在谷歌云上使用推送通知 但是由于某种原因我无法在模拟器上接收推送通知 然而 当我在真实设备上测试时 同一个应用程序确实会收到通知 有其他人遇到过这个问题或找到解决方案吗 模拟设备具有网络访问权限 并且与真实设备具有相同的 Android
  • 如何在运行时更改android应用程序名称和图标?

    安装 Android 应用程序后 当您按下应用程序中的按钮时 是否可以动态更改应用程序图标和名称 在运行时 这是到目前为止的代码 getPackageManager setComponentEnabledSetting new Compon
  • 创建全球唯一的 Android 标识符

    说到Android唯一ID 相信大家都见过this https stackoverflow com questions 2785485 is there a unique android device id 但是我也试图提出一个解决方案来唯
  • 如何在 jetpack compose 中预览对话框?

    我有这个代码 Composable fun SomeDialog Dialog onDismissRequest properties DialogProperties Preview showBackground true Composa
  • eclipse中更新ADT后出错

    我的 eclipse 中 ADT 的最新版本是 API 16 所以我更新了 ADT eclipse gt Help gt Install new software gt Work with ADT 然后发生了多个错误 我什至无法打开 And
  • 空 Activity 中的内存泄漏

    我最近决定使用泄漏金丝雀 https github com square leakcanary在我的项目中 所以我创建了一个空的项目Activity只是为了测试 当我运行应用程序时 在没有逻辑代码或视图的项目创建之后 我从这个库中获得了内存
  • 如何禁用列表视图中的项目?

    我有一个列表视图 它是通过数据库中的记录填充的 现在我必须使一些记录可见但不可选择 我怎样才能做到这一点 这是我的代码 public class SomeClass extends ListActivity private static L
  • 3D 旋转 - 透视

    public class MainActivity extends Activity LinearLayout rotator protected void onCreate Bundle savedInstanceState super
  • 如何将点击事件从片段传递到容器活动?

    我正在实现一个导航抽屉活动 其中导航抽屉中有一个片段 由回收器视图组成 可以动态地将项目添加到导航抽屉 我已经成功实现了这个概念 但面临一个小问题 即当我单击片段中的任何项目时 导航抽屉不会关闭 这是因为我无法从片段访问 DrawerLay
  • 使用 sdk 3.0 在 Facebook 墙上发布

    我试图在由其 ID 定义的用户墙上发布一条消息 但作为响应 我收到错误 未知方法 我的代码是 final Bundle params new Bundle params putByteArray message Test getBytes
  • 改造2:使用json对象发送文件

    我在请求正文中发送对象 如下所示 title test description test images POST create data Call
  • Android Studio 上的 Twitter Kit Fabric Android 模块库

    我在使用适用于 Android 的 Twitter Kit SDK 时遇到问题 我需要将 Twitter Kit SDK 导入到我的项目中的库 模块 我正在使用 Android Studio 我正在使用适用于 Android 的 Fabri
  • 在 Repository 类中观察 Forever 是一个好习惯吗?数据库+网络分页列表

    我正在按照架构指南构建应用程序 实现了房间数据库缓存 网络 需要从单独的实体获取最新页码 我的型号 Entity tableName top rated movie page public class Top Rated Movies Pa
  • android中使用xml的新自定义字体方法

    随着 android 发布 O 预览版 添加了一个新功能 称为xml 中的字体 它很容易实现 但我没有什么疑问 让我首先添加最好的方法1 右键单击资源文件夹并前往新建 gt Android 资源目录 新的出现资源目录窗口 2 在资源类型列表
  • 如何在android中创建nanohttpd服务器?

    其实我也查过一些问题 然后去github上找了一下 但我是新来的 我无法理解这个例子 我想在android中创建http服务器 这样我就可以在PC浏览器中访问它 我有一个类扩展 nanohttpd 的实例 但服务器无法工作 不知道为什么 我

随机推荐

  • 电脑itunes,iTunes

    Music TV and podcasts take center stage iTunes forever changed the way people experienced music movies TV shows and podc
  • 内存管理之分段与分页

    内存管理之分段与分页 转载自多名技术分享者 仅供参考 第一篇 要理解分段和分页 那么得理解为什么会出现分段和分页的技术 首先 这两个技术都是为了利用和管理好计算机的资源 内存 在分段这个技术还没有出现之前 程序运行是需要从内存中分配出足够多
  • 【Verilog】Verilog定义二维数组(2D Array)

    目录 定义的种类 第一种 赋值方法 第二种 赋值方法 第三种 赋值方法 定义的种类 首先看几组定义类型 第一种 定义一个位宽为8的 data1 reg 和 data2 wire 的变量 reg 7 0 data1 wire 7 0 data
  • java.io.IOException: InvalidResourceRequestException: Invalid resource request

    1 背景 做一次kylin计算选择mr进行计算cube 但是报错 首先是 这一报错 报错打开是 yarn上的原因为 2019 05 09 15 07 38 495 ERROR Thread 52 org apache hadoop mapr
  • R文本挖掘之五情感分析

    本文是转载 原文地址 CSDN R语言做文本挖掘 Part5情感分析 Part5情感分析 这是这个系列里面最后一篇文章了 其实这里文本挖掘每一个部分单拎出来都是值得深究和仔细研究的 我还处于初级研究阶段 用R里面现成的算法 来实现自己的需求
  • java 多线程 并发实例_java编程多线程并发处理实例解析

    本文主要是通过一个银行用户取钱的实例 演示java编程多线程并发处理场景 具体如下 从一个例子入手 实现一个银行账户取钱场景的实例代码 第一个类 Account java 账户类 package cn edu byr test public
  • ctfshow-Misc入门 图片篇(50-60)

    八神出的misc入门系列 misc57 59做的比较晚了 本来想着等解了misc61一块发wp的 忙着比赛和推免就忘了 今天看到群里有人用g4 的工具一把梭了才想起来这个事 misc61等能把原理讲清楚了再发 图片篇 图片篇 颜色通道 mi
  • 经典运放电路详细分析(模拟电子技术)

    运放电路 何为运放电路 由运算放大器组成的电路 简称为运放电路 这些电路可以说是五花八门 是我们学习模拟电子技术的一个重要内容 更是一个电子工程师必须掌握的电路之一 运放电路有多种类型 是不是我们把它们牢牢记住就行了呢 显然不是啦 作为知识
  • Excel打开csv文件时中文内容显示为乱码或问号的解决办法

    有同事遇到这样一个问题 就是打开csv文件后 里面的中文显示乱码或者问号 网上找了很久 没有找到有效的解决方法 改非Unicode编码 windows显示语言 office显示语言都没有用 随后自己研究了一下 发现只要改一个地方就可以正常显
  • JWT校验

    JWT JSON Web Token 的缩写 由三部分组成 Header 头部 Payload 负载 Signature 签名 随着技术的发展 分布式web应用的普及 通过session管理用户登录状态成本越来越高 因此慢慢发展成为toke
  • 特征选择和特征理解

    特征选择和特征理解 特征选择 排序 对于数据科学家 机器学习从业者来说非常重要 好的特征选择能够提升模型的性能 更能帮助我们理解数据的特点 底层结构 这对进一步改善模型 算法都有着重要作用 特征选择主要有两个功能 减少特征数量 降维 使模型
  • Java List与ArrayList

    目录 List的介绍 什么是List List的使用 ArrayList与顺序表 ArrayList简介 ArrayList的使用 ArrayList的常见操作 ArrayList的扩容机制 ArrayList的模拟实现 List的介绍 什
  • 安卓绕过隐藏api限制

    安全设置 出于测试目的 Google 内置了一种在给定 Android 设备上全局禁用隐藏 API 限制的方法 标题为如何启用对非 SDK 接口的访问的问题中链接中的部分 说如下 您可以通过使用以下 adb 命令更改 API 强制策略来启用
  • 云上城之个服务器维护时间,云上城之歌幻乐之城开服时间表_云上城之歌新区开服预告_第一手游网手游开服表...

    今日开服 15 00 三十八区苍炎之门 已经开服 2021 08 10 10 00 三十八区巨石林野 已经开服 2021 08 09 15 00 三十八区荧光要塞 已经开服 10 00 三十八区雷神圣所 已经开服 2021 08 07 10
  • springboot 读取配置报错java.lang.IllegalArgumentException: Could not resolve placeholder ‘xxx.xxx‘

    springboot 读取配置报错java lang IllegalArgumentException Could not resolve placeholder xxx xxx 代码中写的是 Value xxx xxx 由于配置文件中没有
  • 协同无法关闭的问题之一

    StartCoroutine 方法名 和StartCoroutine 方法名 是不一样的 用StartCoroutine 方法名 无法用StopCoroutine 方法名 关闭协同 但是StartCoroutine 方法名 就可以用Stop
  • spdlog同时输出到控制台和文件中,可设置文件大小及数目,define方式

    因为自己想要个题目那种效果的 又没找到很符合的博客 就整合了下大佬们的博客封了个 具体的内容都放到代码注释里了 我这个目前在windows下只能将log文件创建到exe所处的目录中 暂时仍未解决该问题 欢迎大佬指正 已解决 直接将文件名设置
  • acwing 博弈论 拆分-Nim游戏

    include
  • 安装最新版Calico

    准备calico yaml 进入calico网站 Install Calico networking and network policy for on premises deployments 找到 Install Calico gt K
  • Android 对data/data/(your packagename)目录下的数据读写、删除操作

    一 数据存储 App自身的数据存储在 data data packagename 目录下 大致结构如下图 Activity提供了getCacheDir 和getFilesDir 方法 getCacheDir getAbsolutePath