//系统清理缓存的时候,内部存储私有目录cache下的文件和外部存储私有目录cache下的文件都被清除
//系统清除数据的时候,内部存储私有目录和外部存储私有目录下的文件都被清除
//openFileOutput在getFilesDir()目录下打开或者创建文件,文件不存在的时候则创建文件
//getFilesDir()目录可以存放持久文件,只要应用不卸载,但是这个目录我们看不见,因为它属于内部存储目录
//通过文件管理器看到的都是外部存储目录
//写入
private void getFileDirTest(){// /data/user/0/com.example.administrator.copypaste/files
    Log.i("wanlijun",getFilesDir().getAbsolutePath());
    try {FileOutputStream fos = openFileOutput("buling",MODE_APPEND);
        FileInputStream fis = new FileInputStream(Environment.getExternalStorageDirectory() +"/1.txt");
        byte[] buffer = new byte[1024];
        int len = 0;
        while ((len = fis.read(buffer)) != -1){fos.write(buffer,0,len);
        }fos.flush();
        fos.close();
        fis.close();
    }catch (Exception e){e.printStackTrace();
    }
}
//读取
private void getFileDirTest2(){Log.i("wanlijun",getFilesDir().getAbsolutePath());
    try {FileInputStream fis = openFileInput("buling");
        FileOutputStream fos = new FileOutputStream(Environment.getExternalStorageDirectory() +"/moezu.txt");
        byte[] buffer = new byte[1024];
        int len = 0;
        while ((len = fis.read(buffer)) != -1){fos.write(buffer,0,len);
        }fos.flush();
        fos.close();
        fis.close();
    }catch (Exception e){e.printStackTrace();
    }
}private void getExternalStorage(){//获取外部存储的公有目录->/storage/emulated/0/DCIM
    Log.i("wanlijun",Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).getAbsolutePath());
    //获取外部存储的私有目录,清除数据就是删除该应用的私有目录(内部存储设备->Android->data目录下的)
    //获取文件根目录,应用不卸载,可长期存放文件
    File[] files = MainActivity.this.getExternalFilesDirs(Environment.DIRECTORY_DCIM);
    for(File file:files){///storage/emulated/0/Android/data/com.example.administrator.copypaste/files/DCIM
        Log.i("wanlijun",file.getAbsolutePath());
    }//获取文件内的具体目录->/storage/emulated/0/Android/data/com.example.administrator.copypaste/files/DCIM
    //就是文件管理器里的内部存储设备->Android->data目录下面的
    Log.i("wanlijun",MainActivity.this.getExternalFilesDir(Environment.DIRECTORY_DCIM).getAbsolutePath());
    //获取缓存目录,清除缓存就是删除该目录和内容
    ///storage/emulated/0/Android/data/com.example.administrator.copypaste/cache
    Log.i("wanlijun",MainActivity.this.getExternalCacheDir().getAbsolutePath());
    File[] files1 = MainActivity.this.getExternalCacheDirs();
    for(File file:files1){Log.i("wanlijun",file.getAbsolutePath());
    }//获取应用存放媒体的目录,目录内的内容可以被其他应用访问,通过MediaStore查询和获取
    ///storage/emulated/0/Android/media/com.example.administrator.copypaste(内部存储设备->Android->media->该应用的包名)
    File[] files2 = MainActivity.this.getExternalMediaDirs();
    for (File file:files2){Log.i("wanlijun",file.getAbsolutePath());
    }
}//检查存储介质的可用性
private boolean isExternalStorageWritable(){if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){return true;
    }else{return false;
    }

}

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    if(requestCode == 101){if(grantResults.length>0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){getFileDirTest();
        }else{Toast.makeText(MainActivity.this,"请先开启存储权限",Toast.LENGTH_LONG).show();
        }}
}
 if(ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED){ActivityCompat.requestPermissions(MainActivity.this,new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},101);
               }else{
//                   getFileDirTest();
                   getFileDirTest2();
                   getExternalStorage();
               }

Android数据持久化保存--File相关推荐

  1. android 清空数组缓存,Android数据持久化之读写SD卡中内容的方法详解

    本文实例讲述了Android数据持久化之读写SD卡中内容的方法.分享给大家供大家参考,具体如下: 前面文章里讲的那三个方法:openFileOutput.openFileInput虽然都能通过流对象O ...

  2. Android数据持久化

    Android数据持久化(存储) 1.SharedPreferences SharedPreferences是Android提供的数据持久化的一种手段,适合单进程.小批量的数据存储与访问.Shared ...

  3. Android数据持久化技术

    Android 数据持久化技术 数据持久化 文件存储 将数据存储到文件中 从文件中读取数据 SharedPreferences存储 使用SharedPreferences存储数据 从SharedPre ...

  4. Android数据持久化存储

    Android数据持久化存储共有四种方式,分别是文件存储.SharedPreferences.Sqlite数据库和ContentProvider.在本篇幅中只介绍前面三种存储方式,因为ContentP ...

  5. Android—数据持久化、SP源码

    3种数据持久化: File:openFileInput(String fileName).openFileOutput(String fileName, int mode) 不对存储的内容进行任何的格 ...

  6. Android数据持久化:SharePreference

    SharePreference:作为Android数据持久化的一种,具有一定的便捷性,适合存储一些体积小的数据. 存储数据方式:键值对的方式,类似于Map: 利用SharePreference.Edi ...

  7. android 数据持久化——File

    在使用Java SE平台开发C/S结构的软件中,File 的IO输入输出流的使用率是非常高的,通过使用IO输入输出流可以对存储介质上的文件进行读写操作,下面的代码就是实现一个在Android平台上使用 ...

  8. Android数据持久化:文件存储

    数据持久化: 数据可分为瞬时数据和关键数据.保存在内存之中的数据是瞬时数据,而对于一些关键性数据,后期需要持续使用的,应当保存在存储设备中: 持久化保存方式: 文件存储.SharePreference ...

  9. Android 数据持久化

    文章目录 一.数据存储 1. 数据存储方式 二. 文件存储 1. 文件存储方式分类 (1). 内部存储 1. 内部存储文件路径 2. 特点 3. 过程 4. 实例:实现备忘录 (2). 外部存储 1. ...

最新文章

  1. java htmlparser 使用教程_Java解析HTML之HTMLParser使用与详解
  2. 创建ContentProvider的详细步骤
  3. 【深入浅出-JVM】(序)
  4. Win32 多线程学习总结
  5. 51标准c语言语句范例,51单片机C语言编程100例
  6. linux安装mysql社区版 rpm_linux系统rpm包安装mysql
  7. linux 命令 考试,linux常用命令总结-第一次考试
  8. 20155235 《网络攻防》 实验八 Web基础
  9. jquery --- 使用when方法等待2个异步事件结束后执行某一个函数.
  10. 网络知识:核心交换机概念知识介绍
  11. sql 非主键每年自增_或许你不知道的 10 条 SQL 技巧
  12. C89 和 C99的标准比较
  13. Qt 学习之路 :访问网络(4)
  14. Linux(ubuntu 18.0.4) Java环境安装,环境变量配置
  15. C# 反射应用实例-获取当前Color类的所有颜色
  16. 懂生意的产品经理,才能做好商业化
  17. MYSQL解决科目余额表汇总问题
  18. 次模优化·第〇集:简介
  19. 我们过度解读了鲁迅了么?
  20. 运维是技术含量最低的岗位吗?自学应该看书还是看视频?答案都在这里!

热门文章

  1. h200和gr1108_华三H3C GR1108-P 路由器性能极限
  2. BUUCTF WEB [BSidesCF 2020]Had a bad day
  3. 出来行,迟早是要还的(篇六):衣带渐宽终不悔
  4. 华为手机 绑定MAC 无法上网
  5. 权值初始化 - Xavier和MSRA方法
  6. Ambassador系列-09-AuthService认证服务
  7. EXPLAINING AND HARNESSING ADVERSARIAL EXAMPLES 论文笔记
  8. SEO优化之og:标签
  9. 如何取消linux响铃_彻底关闭 Linux响铃的方法
  10. 华大HC32A460 系列介绍(一)