FileUtils【获取SD卡根目录、读写文件、移动、复制、删除...,办公软件从入门到精通正版

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岁以上使用!

点赞(62) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿
发表
评论
返回
顶部