Android应用开发:SD卡读写操作详解与实例

0 下载量 112 浏览量 更新于2024-08-29 收藏 49KB PDF 举报
在Android应用程序开发中,SD卡的读写功能对于存储和管理用户数据至关重要。本文将详细介绍如何在Android平台上进行SD卡的读写操作。 首先,我们需要获取SD卡的根目录。Android系统提供了`Environment.getExternalStorageDirectory()`方法,通过调用这个API,我们可以得到外部存储设备(通常指SD卡)的绝对路径。示例代码如下: ```java String sdCardRoot = Environment.getExternalStorageDirectory().getAbsolutePath(); ``` 这段代码的作用是获取SD卡的根目录路径,并将其保存在`sdCardRoot`字符串变量中,以便后续的文件操作。 接下来,我们学习如何在SD卡上创建文件夹。创建文件夹涉及到`File`类的使用,首先定义一个方法`createDirOnSDCard`,接受一个字符串参数`dir`作为要创建的目录名。通过拼接`sdCardRoot`和指定的目录路径,然后使用`mkdirs()`方法创建目录: ```java public File createDirOnSDCard(String dir) { File dirFile = new File(sdCardRoot + File.separator + dir + File.separator); Log.v("createDirOnSDCard", sdCardRoot + File.separator + dir + File.separator); dirFile.mkdirs(); return dirFile; } ``` 这个方法会检查并创建指定的目录,如果目录不存在则自动创建。 文件的创建与文件夹类似,通过`createFileOnSDCard`方法,我们为指定的文件名`fileName`在指定的目录`dir`下创建新文件,并使用`createNewFile()`方法: ```java public File createFileOnSDCard(String fileName, String dir) throws IOException { File file = new File(sdCardRoot + File.separator + dir + File.separator + fileName); Log.v("createFileOnSDCard", sdCardRoot + File.separator + dir + File.separator + fileName); file.createNewFile(); return file; } ``` 这个方法会在SD卡的指定路径下创建一个新的文件,并确保文件的创建成功。 当需要检查文件是否已存在于SD卡的特定目录时,可以使用`isFileExist`方法,它接收文件名和完整路径作为参数,通过`exists()`方法判断文件是否存在: ```java public boolean isFileExist(String fileName, String path) { File file = new File(sdCardRoot + path + File.separator + fileName); return file.exists(); } ``` 如果文件存在,返回`true`,否则返回`false`。 最后,`writeData2SDCard`方法用于将数据流(InputStream对象)写入到SD卡指定目录下的文件。这需要先创建一个`File`对象,然后调用其`writeTo()`方法来实现数据的写入: ```java public void writeData2SDCard(String path, String fileName, InputStream data) { File file = null; // 这里需要根据实际情况初始化file对象,可能需要先创建文件 try (BufferedOutputStream outputStream = new BufferedOutputStream(new FileOutputStream(file))) { byte[] buffer = new byte[1024]; int read; while ((read = data.read(buffer)) != -1) { outputStream.write(buffer, 0, read); } } catch (IOException e) { e.printStackTrace(); } // 文件写入后可能需要关闭文件流和处理异常 } ``` 这部分代码中,使用了`BufferedOutputStream`来提高数据写入效率,通过循环读取输入流的数据并写入到文件中。 总结起来,本文详细介绍了Android应用程序中SD卡读写的基本操作,包括获取SD卡根目录、创建文件夹和文件、判断文件存在以及写入数据。理解并掌握这些核心功能,可以帮助开发者更好地管理应用程序中的数据存储。