前言:
Android系统提供了两种存储方式,即内部存储和外部存储。内部存储是指应用程序在设备内部的私有存储空间,通常用于存储应用的私有数据,这些数据只能被应用程序本身访问。而外部存储则是指设备上可移动的存储介质,如SD卡,用于存储非敏感的公共数据,可以被多个应用程序共享访问。本文将通过示例代码分析Android内部存储和外部存储的使用方式,以及它们的区别和特点。
内部存储的实例代码:
内部存储使用的是应用程序的私有目录,在这个目录下可以创建文件和子目录,并且只有当前应用程序有权访问这些文件。下面是一个使用内部存储的示例代码:
// 内部存储:写入文件
String filename = "myfile.txt";
String content = "Hello world!";
FileOutputStream fos = null;
try {
fos = openFileOutput(filename, Context.MODE_PRIVATE);
fos.write(content.getBytes());
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
// 内部存储:读取文件内容
try {
FileInputStream fis = openFileInput(filename);
BufferedReader br = new BufferedReader(new InputStreamReader(fis));
StringBuilder sb = new StringBuilder();
String line;
while ((line = br.readLine()) != null) {
sb.append(line);
}
fis.close();
String fileContent = sb.toString();
} catch (Exception e) {
e.printStackTrace();
}
上述代码首先通过openFileOutput()方法获取一个FileOutputStream对象,然后使用该对象将内容写入到指定的文件中。而读取文件内容的过程则是通过openFileInput()方法获取一个FileInputStream对象,然后使用该对象读取文件内容并输出。
外部存储的实例代码:
外部存储通常用于存储大文件或需要被多个应用程序共享的文件。下面是一个使用外部存储的示例代码:
// 外部存储:检查是否可用
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state)) {
// 外部存储可用
// 获取外部存储的根目录
File externalDir = Environment.getExternalStorageDirectory();
// 创建文件
File file = new File(externalDir, "myfile.txt");
try {
FileOutputStream fos = new FileOutputStream(file);
fos.write("Hello world!".getBytes());
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
} else {
// 外部存储不可用
// 处理存储不可用的情况
}
上述代码首先通过Environment.getExternalStorageState()方法检查外部存储是否可用,然后使用Environment.getExternalStorageDirectory()方法获取外部存储的根目录。接着创建一个文件对象,指定外部存储根目录下的文件名,并通过FileOutputStream对象将内容写入到文件中。
总结:
本文通过示例代码分析了Android内部存储和外部存储的使用方式。内部存储是应用程序的私有存储空间,可以通过openFileInput()和openFileOutput()方法进行读写操作,文件只能被应用程序本身访问。而外部存储是可移动的存储介质,可以被多个应用程序共享访问。外部存储的使用需要先检查其是否可用,然后通过Environment.getExternalStorageDirectory()方法获取外部存储的根目录,并通过FileOutputStream对象进行读写操作。使用内部存储和外部存储都需要在AndroidManifest.xml文件中声明相关权限。内部存储相对安全,但容量有限;外部存储容量较大,但需要注意权限和可用性的检查。根据实际需求,选择合适的存储方式来存储应用程序的数据。