鉴于实现android文件读写的惨痛经历,我决定将其实现过程写下来。其实网站上关于这方面的博客、讨论很多,我也看了很多,但都不太完整(也可能是我没看明白),导致我在这个问题上纠结了足足4天,在完成前1小时,我甚至想怒摔平板(原因是我要root它,但下载的5、6个应用都未能root成功,官方论坛给的root链接共享盘居然过期?实力心疼自己)。当然也有我自身原因,因为我是刚从web过来做android开发,近三年也没用过安卓手机、平板类的设备,导致我开始时都忘了安卓机是有文件管理器的。。。。。。

好了,废话不多说,正式开始

权限配置,在AndroidManifest.xml中添加外设存储的读写权限。android的权限主要分为两类,普通权限和危险权限(其实还有第三类特殊权限),如果是申请普通权限,只用在AndroidManifest.xml中添加一下权限声明就可以了,因为系统会自动进行授权。但如果是危险权限,则还需进行运行时权限处理。

权限运行时申请,本次使用的外设存储的读写权限是属于危险类权限,所以必须进行运行时权限处理。先判断是否拥有读写权限,若没有则先申请权限。然后重写onRequestPermissionsResult方法,当申请权限成功后,即执行写文件方法。

if (ContextCompat.checkSelfPermission(mContext, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_DENIED) {

ActivityCompat.requestPermissions((Activity) mContext, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE}, 1);

} else {

writeDataFile();

}

@Override

public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {

super.onRequestPermissionsResult(requestCode, permissions, grantResults);

switch (requestCode) {

case 1:

if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {

writeDataFile();

} else {

Toast.makeText(this, "申请权限失败", Toast.LENGTH_SHORT).show();

}

}

}

文件写入

private void writeDataFile() {

BufferedWriter writer = null;

FileWriter fileWriter=null;

String fileName="";

try {

fileName="info.txt";

File newFile = new File(Environment.getExternalStorageDirectory(), fileName);

fileWriter = new FileWriter(newFile, false);

writer = new BufferedWriter(fileWriter);

writer.write("Hello World");

writer.flush();

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

} finally {

if (writer != null) {

try {

fileWriter.close();

writer.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

}

文件读取

public ArrayList readFileData(){

ArrayList arrayList=new ArrayList<>();

BufferedReader reader=null;

FileReader fileReader=null;

File file=new File(Environment.getExternalStorageDirectory(),"info.txt");

try {

fileReader=new FileReader(file);

reader=new BufferedReader(fileReader);

String line="";

while ((line=reader.readLine())!=null){

arrayList.add(line);

}

return arrayList;

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

android请求读写外设权限,android读写文件完整版相关推荐

  1. Google Pixel获取root权限的方法【完整版】

    Google Pixel获取root权限的方法[完整版] 由于原作者部分表述不够详尽,操作过程中遇到几个非常大的问题:解决过程太痛苦了!!一并加入教程中!! 原文地址 https://chen.sn/ ...

  2. iText5实现Java生成PDF文件完整版,二维码

    iText5实现Java生成PDF文件完整版 vue 项目中分别使用 vue-pdf 插件和内嵌 iframe 实现 PDF 文件预览,缩放,旋转,下载,保存等功能 ? Vue打印文件(v-print ...

  3. .proto 文件转成 lua 文件完整版(Windows 下)

    .proto 文件转成 .lua 文件完整版(Windows 下) 版权声明:本文为博主原创文章,转载请注明CSDN博客源地址!共同学习,一起进步~ https://blog.csdn.net/qq_ ...

  4. android 请求sd卡权限,androidQ sd卡权限使用详解

    默认情况下,如果应用以 Android Q 为目标平台,则在访问外部存储设备中的文件时会进入过滤视图.应用可以使用 Context.getExternalFilesDir() 将专用于自己的文件存储在 ...

  5. android方法数据库的权限,Android数据存储,运行时权限

    Android存储目录 Android的底层支持是Linux,不同于Windows,没有分盘的概念,是以文件夹形式呈现,可以理解为一个应用就是一个用户. data目录 手机内部存储目录(手机本身内存) ...

  6. android 打开相册的权限,Android 启动系统相机,相册,裁剪图片及6.0权限管理

    在日常开发中,我们经常需要用到上传图片的 功能,这个时候通常有两种做法,第一种,从相机获取,第二种,从相册获取.今天这篇博客主要讲解利用系统的Intent怎样获取? 主要内容如下 怎样通过相机获取我们 ...

  7. Android常用的网络权限,Android常用的权限大全

    Android的常用权限 访问网络 android.permission.INTERNET 访问网络连接可能产生GPRS流量 写入外部存储 android.permission.WRITE_EXTER ...

  8. android 6 编译 root权限,Android应用获得Root权限

    要让Android应用获得Root权限,首先Android设备必须已经获得Root权限. 应用获取Root权限的原理:让应用的代码执行目录获取最高权限.在Linux中通过chmod 777 [代码执行 ...

  9. android 9 申请动态权限android.permission.WRITE_EXTERNAL_STORAGE 允许后应用闪退

    问题描述:如题,在调试android 9 高通msm8953平台时,客户反馈应用在允许Manifest.permission.WRITE_EXTERNAL_STORAGE权限后,应用闪退. 从log分 ...

最新文章

  1. UIScrollView无法滚动可能的原因及解决办法分析
  2. iPhone开发之 ARC是什么
  3. C#学习笔记-XML的读写(一)
  4. 数据库设计三大范式应用实例剖析(转载)
  5. gorm配置logger显示执行的sql
  6. nginx里面的rewrite重写模块详解
  7. ubantu自带防火墙的相关使用
  8. 彻底理解HashMap的元素插入原理
  9. 解决 List 执行 remove 时报异常 java.lang.UnsupportedOperationException
  10. Google推出了一个名为“Google Public DNS”的域名解析系统
  11. 如何获取变量token的值
  12. springcache使用笔记003_注释驱动的 Spring cache 基本原理,注意和限制,@CacheEvict 的可靠性问题
  13. CodeForces 379 E New Year Tree Decorations
  14. 蓝桥杯 ALGO-64 算法训练 大小写判断
  15. Kafka使用经验小结
  16. NGUI混合FingerGesture《卷二》分离触摸事件
  17. Ubuntu13.04安装OpenCV2.4.5
  18. 打造自己的U盘工具箱
  19. 有限单元法(The Finite Element Method)
  20. android 图标删除不了,手机程序卸载之后桌面上残留的图标删除不掉

热门文章

  1. [转载]Radmin的命令行参数
  2. 201671010426 孙锦喆 实验四附加实验
  3. java 千分符_java中关于千分位
  4. Java编程思想-并发
  5. feng 的模块(框架)以及运作过程
  6. 解决点击EditText不弹出键盘,但现实光标闪烁的问题
  7. 为什么负责任的技术始于数据治理
  8. Google正在推广HTTPS
  9. 炸了,开源社区应该用中文吗?
  10. Java游戏服务端开发之开课了