3-SII--Android的SD卡文件读写
2018-08-26 本文已影响4人
e4e52c116681
零、前言
[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);
}
本文由张风捷特烈原创,转载请注明
更多安卓技术欢迎访问:https://www.jianshu.com/c/004f3fe34c94
张风捷特烈个人网站,编程笔记请访问:http://www.toly1994.com
你的喜欢与支持将是我最大的动力