3-SII--Android的SD卡文件读写
零、前言
[1]读写SD卡需要运行时权限。
[2]如果对运行时权限不清楚的童鞋,可以看一下我的封装:TI--安卓运行时权限完美封装
一、使用:SD卡文件读写
FileHelper fileHelper = FileHelper.get();
//在SD卡追加模式创建:data/writeFile2SD.txt文件,写入"toly"
fileHelper.writeFile2SD("data/writeFile2SD.txt", "toly", true);
//在SD卡上创建一个空文件
fileHelper.createFile("create/create.txt");
//读取data/writeFile2SD.txt文件
String read = fileHelper.readFromSD("data/writeFile2SD.txt");
System.out.println(read);//tolytolytolytolytolytoly
二、创建文件
判断是否存在SD卡
/**
* 判断是否存在SD卡
*
* @return 是否存在SD卡
*/
private boolean hasSdCard() {
return Environment.getExternalStorageState()
.equals(Environment.MEDIA_MOUNTED);
}
在SD卡中创建文件
/**
* 在SD卡中创建文件的核心代码
*
* @param savePath 保存的绝对路径(路径不存在会自动创建上级文件夹)
* @param fileContent 文件内容
* @param append 是否以追加模式
*/
private File writeFileWithAbsolutePath(String savePath, String fileContent, boolean append) {
FileOutputStream fos = null;
File filePic = null;
try {
filePic = new File(savePath);
if (!filePic.exists()) {
filePic.getParentFile().mkdirs();
filePic.createNewFile();
}
fos = append ?
new FileOutputStream(savePath, true) : new FileOutputStream(savePath);
write(fos, fileContent);
} catch (IOException e) {
e.printStackTrace();
} finally {
close(fos);
}
return filePic;
}
/**
* 在SD卡中创建文件暴露方法
*
* @param filename 文件名:(形式:"XX/YY/ZZ.UU")
* @param fileContent 文件内容
* @param append 是否以追加模式
*/
public File writeFile2SD(String filename, String fileContent, boolean append) {
return writeFileWithAbsolutePath(PathUtils.getSDPath() + File.separator + filename, fileContent, append);
}
/**
* 在SD卡中创建空文件
*
* @param filename 文件名
* @return 文件对象
*/
public File createFile(String filename) {
return writeFile2SD(filename, "", false);
}
三、读取文件
/**
* 在SD卡中读取文件
*
* @param filename 文件名
* @return 文件内容
*/
private String readFileWithAbsolutePath(String filename) {
String result = null;
FileInputStream input = null;
if (hasSdCard()) {
try {
input = new FileInputStream(filename);//文件输入流
result = read(input);//读取InputStream
close(input); //关闭输入流
} catch (IOException e) {
e.printStackTrace();
L.e(e.toString());
} finally {
close(input);
}
}
return result;
}
/**
* 在SD卡中读取文件
*
* @param fileName 文件名
* @return 文件内容
*/
public String readFromSD(String fileName) {
return readFileWithAbsolutePath(PathUtils.getSDPath() + File.separator + fileName);
}
后记、
1.声明:
[1]本文由张风捷特烈原创,转载请注明
[2]欢迎广大编程爱好者共同交流
[3]个人能力有限,如有不正之处欢迎大家批评指证,必定虚心改正
[4]你的喜欢与支持将是我最大的动力
2.连接传送门:
更多安卓技术欢迎访问:安卓技术栈
我的github地址:欢迎star
简书首发,腾讯云+社区同步更新
张风捷特烈个人网站,编程笔记请访问:http://www.toly1994.com
3.联系我
QQ:1981462002
邮箱:1981462002@qq.com
微信:zdl1994328
4.欢迎关注我的微信公众号,最新精彩文章,及时送达:

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
在Windows笔记本上调试运行在iOS设备上的前端应用
我在每天工作中需要在不同的移动设备上测试我们开发的前端应用是否正常工作,比如iOS设备和Android设备。我用的工作笔记本电脑又是Lenovo的,安装的是Windows操作系统。 有的时候一个开发好的前端应用,在Android设备上正常工作,但是在iOS平板上测试却发现问题(相当广大前端开发者都曾经遇到过类似问题)。顺手就想调试一下找到原因。那么一个前端应用运行在iOS设备上,程序员如何在安装了Windows系统的笔记本上进行调试呢? 假设我的前端应用是这个url:https://jerrylist.cfapps.eu10.hana.ondemand.com/ui5/。 在IPAD上打开界面如下: 1. 在Windows笔记本电脑上安装iTunes: https://www.apple.com/cn/itunes/download/ 安装后,您的Windows笔记本电脑才能成功和iOS设备连接并成功识别它。 2. 到iOS设备上,菜单iPad->Settings->Safari->Advanced,打开“Web Inspector” 选项。 3. 从github网站...
-
下一篇
4-SII--☆Android缓存文件(带有效时长)封装
零、前言 [1]把我的缓存文件工具改写成了策略模式,感觉还不错。 [2]以前静态方法调用,很方便,但看着就是不爽,代码真的太冗余了。 [3]突然灵光一闪,"少年,看你骨骼惊奇,策略模式了解一下吗。"便有此文。 [4]如果不了解SharedPreferences,可以先看这篇:1-SII--SharedPreferences完美封装 缓存策略类图 缓存策略.png 一、使用: //新建缓存对象 CacheWorker innerCache = new CacheWorker(new InnerFileStrategy(this)); //设置缓存 innerCache.setCache("toly", "hehe", 10); //获取缓存 String value = innerCache.getCache("toly"); //SD卡缓存 CacheWorker sdCache = new CacheWorker(new SDFileStrategy()); sdCache.setCache("toly", "hehe2", 10); String sdCach = sdCache....
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- MySQL数据库在高并发下的优化方案
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8编译安装MySQL8.0.19
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- MySQL8.0.19开启GTID主从同步CentOS8
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- Dcoker安装(在线仓库),最新的服务器搭配容器使用
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- Docker容器配置,解决镜像无法拉取问题