FileUtils,作为一个Android开发中常用的文件处理工具类,它提供了一系列的方法来处理SD卡中的文件。在开发中,我们常常需要访问SD卡中的文件,比如存储用户数据或是缓存数据等,这时我们就可以使用FileUtils这个工具类。
先介绍一下如何获取SD卡根目录。我们知道,SD卡可能不止一个,设备也可能不支持SD卡,因此我们需要先判断SD卡是否存在并且是否可用,然后才能获取SD卡根目录。代码如下:
```
public static String getSDCardRoot() {
String sdcardRoot = null;
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
sdcardRoot = Environment.getExternalStorageDirectory().getAbsolutePath();
}
return sdcardRoot;
}
```
可以看到,getExternalStorageState()方法用来获取SD卡状态,如果SD卡可用,则用getExternalStorageDirectory().getAbsolutePath()方法获取SD卡根目录。
接着讲一下文件的读写。在读取文件时,我们通常将读取的数据缓存在内存中,然后进行操作;而在写入文件时,我们需要先创建一个新的文件,然后写入数据。代码如下:
```
// 读取文件
public static String readFile(String filePath) {
if (TextUtils.isEmpty(filePath)) {
return null;
}
StringBuilder stringBuilder = new StringBuilder();
BufferedReader bufferedReader = null;
try {
FileInputStream fileInputStream = new FileInputStream(filePath);
bufferedReader = new BufferedReader(new InputStreamReader(fileInputStream));
String line;
while ((line = bufferedReader.readLine()) != null) {
stringBuilder.append(line);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (bufferedReader != null) {
bufferedReader.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return stringBuilder.toString();
}
// 写入文件
public static boolean writeFile(String filePath, String content) {
if (TextUtils.isEmpty(filePath) || TextUtils.isEmpty(content)) {
return false;
}
boolean isSuccess = false;
BufferedWriter bufferedWriter = null;
try {
File file = new File(filePath);
if (!file.getParentFile().exists()) {
file.getParentFile().mkdirs();
}
if (file.exists()) {
file.delete();
}
file.createNewFile();
FileOutputStream fileOutputStream = new FileOutputStream(file);
bufferedWriter = new BufferedWriter(new OutputStreamWriter(fileOutputStream));
bufferedWriter.write(content);
isSuccess = true;
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (bufferedWriter != null) {
bufferedWriter.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return isSuccess;
}
```
可以看到,使用FileInputStream和FileOutputStream进行文件的读写操作。在读取时,我们使用BufferedReader来读取数据,读取完成后再将数据添加到StringBuilder中,最终返回这个StringBuilder中存储的数据;在写入时,我们使用BufferedWriter来进行数据的写入。
接下来,介绍一些常用的文件处理操作,比如移动、复制和删除。代码如下:
```
// 移动文件
public static boolean moveFile(String sourceFilePath, String destFilePath) {
if (TextUtils.isEmpty(sourceFilePath) || TextUtils.isEmpty(destFilePath)) {
return false;
}
boolean isSuccess = false;
File sourceFile = new File(sourceFilePath);
File destFile = new File(destFilePath);
if (sourceFile.exists() && destFile.getParentFile().exists()) {
isSuccess = sourceFile.renameTo(destFile);
}
return isSuccess;
}
// 复制文件
public static boolean copyFile(String sourceFilePath, String destFilePath) {
if (TextUtils.isEmpty(sourceFilePath) || TextUtils.isEmpty(destFilePath)) {
return false;
}
boolean isSuccess = false;
FileInputStream fileInputStream = null;
FileOutputStream fileOutputStream = null;
File sourceFile = new File(sourceFilePath);
File destFile = new File(destFilePath);
if (sourceFile.exists() && destFile.getParentFile().exists()) {
try {
fileInputStream = new FileInputStream(sourceFilePath);
fileOutputStream = new FileOutputStream(destFilePath);
byte[] buffer = new byte[1024];
int readLength;
while ((readLength = fileInputStream.read(buffer)) != -1) {
fileOutputStream.write(buffer, 0, readLength);
}
isSuccess = true;
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (fileInputStream != null) {
fileInputStream.close();
}
if (fileOutputStream != null) {
fileOutputStream.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
return isSuccess;
}
// 删除文件
public static boolean deleteFile(String filePath) {
if (TextUtils.isEmpty(filePath)) {
return false;
}
boolean isSuccess = false;
File file = new File(filePath);
if (file.exists()) {
isSuccess = file.delete();
}
return isSuccess;
}
```
可以看到,移动文件只需要使用File的renameTo()方法即可;复制文件则需要使用FileInputStream和FileOutputStream进行数据的读写操作;删除文件则使用File的delete()方法来进行删除。
通过上述方法,我们能够轻松地处理SD卡中的文件,从而满足我们在开发中的各种读写操作需求。
购买后如果没出现相关链接,请刷新当前页面!!!
链接失效的请留言 ,我看见了就补上!!!
网站内容来源于互联网,我们将这些信息转载出来的初衷在于分享与学习,这并不意味着我们站点对这些信息的观点或真实性作出认可,我们也不承担对这些信息的责任。
适度游戏益脑,沉迷游戏伤身。 合理安排时间,享受健康生活。适龄提示:适合18岁以上使用!
发表评论 取消回复