Android内存与外存混淆
创始人
2024-10-09 10:30:22
0

在 Android 设备中,Internal Storage(内存)和 External Storage(外存)是两个不同的概念。然而,由于名称相似,很容易混淆,特别是在与存储有关的编程中。因此,以下是一些应该知道的关键点:

  1. Internal Storage 是设备自带的不可移除存储,通常用于存储应用程序私有数据。这包括 SharedPreferences、数据库和其他文本文件等。对于用户来说,这个存储是不可见的,无法直接访问。

  2. External Storage 则是用于共享文件的存储。它是可移除的媒体,例如 SD 卡或 USB 存储器。对于用户来说,这个存储是可以在系统文件管理器中直接访问的。

以下是一个简单的代码示例,用于读写 Internal 和 External Storage:

读取 Internal Storage 上的 SharedPreferences:

SharedPreferences preferences = getApplicationContext().getSharedPreferences("my_preferences", Context.MODE_PRIVATE);
String value = preferences.getString("key", "default_value");

写入 Internal Storage 上的文件:

String fileContent = "This is the content of my file";
try {
    FileOutputStream fos = openFileOutput("myfile.txt", Context.MODE_PRIVATE);
    fos.write(fileContent.getBytes());
    fos.close();
} catch (IOException e) {
    e.printStackTrace();
}

读取 External Storage 上的文件:

String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state)) {
    File file = new File(Environment.getExternalStorageDirectory(), "my_file.txt");
    try {
        FileInputStream fis = new FileInputStream(file);
        byte[] buffer = new byte[fis.available()];
        fis.read(buffer);
        String fileContent = new String(buffer);
        fis.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

写入 External Storage 上的文件:

String fileContent = "This is the content of my file";
if (Environment.MEDIA_MOUNTED.equals(Environment

相关内容

热门资讯

Android Recycle... 要在Android RecyclerView中实现滑动卡片效果,可以按照以下步骤进行操作:首先,在项...
安装apache-beam==... 出现此错误可能是因为用户的Python版本太低,而apache-beam==2.34.0需要更高的P...
Android - 无法确定任... 这个错误通常发生在Android项目中,表示编译Debug版本的Java代码时出现了依赖关系问题。下...
Android - NDK 预... 在Android NDK的构建过程中,LOCAL_SRC_FILES只能包含一个项目。如果需要在ND...
Akka生成Actor问题 在Akka框架中,可以使用ActorSystem对象生成Actor。但是,当我们在Actor类中尝试...
Agora-RTC-React... 出现这个错误原因是因为在 React 组件中使用,import AgoraRTC from “ago...
Alertmanager在pr... 首先,在Prometheus配置文件中,确保Alertmanager URL已正确配置。例如:ale...
Aksnginxdomainb... 在AKS集群中,可以使用Nginx代理服务器实现根据域名进行路由。以下是具体步骤:部署Nginx i...
AddSingleton在.N... 在C#中创建Singleton对象通常是通过私有构造函数和静态属性来实现,例如:public cla...
Alertmanager中的基... Alertmanager中可以使用repeat_interval选项指定在一个告警重复发送前必须等待...