Android读写文件工具类详解
时间:2022-07-27
本文章向大家介绍Android读写文件工具类详解,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
本文实例为大家分享了Android读写文件工具类的具体代码,供大家参考,具体内容如下
public class Utils {
private static String path1 = Environment.getExternalStorageDirectory().getAbsolutePath();
private static String path2 = Environment.getDownloadCacheDirectory().getAbsolutePath();
private static String pathExt = "/111/222/333/444/555/";
private static String fileName = "6.txt";
public static void write(String str) {
String filePath = null;
boolean hasSDCard =Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED);
if (hasSDCard) {
filePath = path1 + pathExt + fileName;
} else {
filePath = path2 + pathExt + fileName;
}
try {
File file = new File(filePath);
if (!file.exists()) {
//mkdirs()方法生成多层文件夹
//mkdir()方法生成一层层文件夹
// File dir = new File(file.getParent());
// dir.mkdirs();
file.getParentFile().mkdirs();//生成文件外层的文件夹
file.createNewFile();//生成文件
}
FileOutputStream os = new FileOutputStream(file);
os.write(str.getBytes());
os.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public static String read() {
String content = "";
String filePath;
boolean sdcard = Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED);
if (sdcard) {
filePath = path1 + pathExt + fileName;
} else {
filePath = path2 + pathExt + fileName;
}
try {
File file = new File(filePath);
if (file.exists()) {
FileInputStream is = new FileInputStream(file);
InputStreamReader inputReader = new InputStreamReader(is);//设置流读取方式
BufferedReader buffReader = new BufferedReader(inputReader);
String line;
try {
while (null != (line = buffReader.readLine())) {
content += line + "n";//读取的文件容
}
is.close();//关闭输入流
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (null != is) {
is.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
return content;
}
}
1. 清单文件中添加读写权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /
2.Android6.0以上版本要动态申请读写权限
ArrayList<String permissionList = new ArrayList< ();
private String[] permissions = {
"android.permission.READ_EXTERNAL_STORAGE",
"android.permission.WRITE_EXTERNAL_STORAGE" };
//检测是否有写的权限
//判断手机版本,如果低于6.0 则不用申请权限,直接拍照
if (Build.VERSION.SDK_INT = Build.VERSION_CODES.M) {
if (checkSelfPermission(permissions[0]) != PackageManager.PERMISSION_GRANTED) {
permissionList.add(permissions[0]);
}
if (checkSelfPermission(permissions[1]) != PackageManager.PERMISSION_GRANTED) {
permissionList.add(permissions[1]);
}
if (!permissionList.isEmpty()) {
String[] permissions1 = permissionList.toArray(new String[permissionList.size()]);
requestPermissions(permissions1, 1);
} else {
Utils.write("balabala");
Utils.read();
}
} else {
Utils.write("balabala");
Utils.read();
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
switch (requestCode){
case 1:
if (PackageManager.PERMISSION_GRANTED == grantResults[0]){
Utils.write("balabala");
Utils.read();
} else {
Log.d(TAG, "fail: ");
}
break;
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助。
- hdu----(4545)魔法串(LCS)
- Oracle压缩黑科技(二)—压缩数据的修改
- 在Pivotal Web Service上发布Spring Boot应用
- hdu---(1325)Is It A Tree?(并查集)
- spark2 sql编程样例:sql操作
- hdu----(1599)最大子矩阵(几何/dp)
- Go语言简单的TCP编程
- hdu---(1054)Strategic Game(最小覆盖边)
- Swagger Starter 1.4.0发布:新增swagger功能开源与全局参数的配置。
- Go语言语法汇总
- 整理的一些模版LCS(连续和非连续)
- 以太坊开发实战(第1部分:智能合约)
- spark2 sql读取数据源编程学习样例2:函数实现详解
- hdu---(4310)Hero(贪心算法)
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- 【基础篇】Python+Go——带大家一起另寻途径提高计算性能
- 转录组分析 | 使用Trimmomatic过滤Fastq文件
- 转录组分析 | 使用FastQC进行数据质控
- R语言绘图 | 给箱线图加个点
- R语言绘图 | 使用pheatmap快速绘制热图
- 可能是目前最详细从零开始配置 TypeScript 项目的教程
- 比对得到的SAM文件怎么看?
- ANTNet|端侧架构,精度速度双超MobileNetV2
- 9个动图带你进入PyQtGraph的强大可视化世界
- 转录组分析 | 使用STAR进行比对
- 使用R/qtl进行QTL分析
- 转录组分析 | 使用RSEM进行转录本定量
- 使用R语言计算遗传力
- 专属于六倍体小麦的Bioconductor注释包
- 轻松上传超过100M的文件至GitHub