文件存储ExtenalStorage和InternalStorage使用以及区别

本文介绍了Android的内部存储(InternalStorage)和外部存储(ExternalStorage)的区别及使用方法。内部存储包括data/app(apk)、data/data(数据存储)、databases(数据库)、files(普通数据)和cache(缓存)等目录。外部存储通常指storage/sdcard,分为公有和私有目录。Android6.0以后,访问外部存储需用户动态授权。文章通过案例展示了数据的保存和读取操作。
摘要由CSDN通过智能技术生成

一.Android整个储存空间分为内部存储和外部存储两部分

  1. 内部储存:即InternalStorage,也就是内置存储卡,这是手机内置的存储空间
  2. 外部存储:即ExternalStorage,也就是外置存储卡,如sd卡。
  3. data文件夹就是我们常说的内部存储。外部存储一般就是我们下面看到的storage文件夹,当然也有可能是mnt文件夹。
    在这里插入图片描述
    4.内部存储,在data文件下,一个app文件夹,一个时data文件夹是需要关注的。app文件夹存放apk文件;data文件夹存放这,在使用sharedPreferenced的时候,将数据持久化存储于本地,其实就是存在这个文件中的xml文件里,App里边的数据库文件就存储于databases文件夹中,还有我们的普通数据存储在files中,缓存文件存储在cache文件夹中。
    使用:getCacheDir()方法用于获取/data/data//cache目录
    getFilesDir()方法用于获取/data/data//files目录
    在这里插入图片描述
    4.外部存储
    一般来说,在storage文件夹中有一个sdcard文件夹,这个文件夹中的文件又分为两类,一类是公有目录,还有一类是私有目录。使用:Environment.getExternalStorageDirectory().getAbsolutePath()+"/hanjie.txt";
    Environment.getExternalStorageDirectory()方法是获取外部存储的公有文件的路径。getAbsolutePath()获取的是绝对路径。/hanjie.txt是文件名。

二:总结

1.Android系统私有的外部存储,也就是与此app相关的内容,是随着应用程序的卸载而卸载的,公有的外部存储则不会。

2.Android中操作外部存储时需要添加读写外部存储的权限

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />

3.注意:在AndroidAPI6.0之后,根目录文件存储时需要用户授权,即使在AndroidManifest.xml文件中配置了存储权限,也需要动态授权,用户不受权是无法使用的
三:外部存储案例
1.效果,先将数据保存,再将数据读取
在这里插入图片描述
2.在文件夹中查看保存的文件
在这里插入图片描述
3.代码

3.1.ExternalActivity代码

package com.hanjie.datastorage_2021_0414;


import android.Manifest;
import android.content.pm.PackageManager;
import android.os.Bundle;

import android.os.Environment;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;


public class ExternalActivity extends AppCompatActivity {
   

    private EditText infoEdt;
    private TextView txt;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
   
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_external);
        infoEdt = findViewById(R.id.info_edt);
        txt = findViewById(R.id.textView);

      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值