Android学习笔记(八)——数据存储(SD卡文件操作)

本文实例讲述Android开发之SD卡文件操作。分享给大家供大家参考,具体如下:
为了正常的操作SD卡,需要在AndroidManifeat.xml中声明SD卡的权限:添加代码如下:

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAG" />
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />

添加以上的代码后:
我们首先获取SD卡信息是通过Environment类来实现的,该类是App获取各种目录信息的工具,一些常用的方法如下:

方法 功能
getRootDirectory 得到系统根目录的路径
getDataDirectory 得到系统数据目录的路径
getDownloadCacheDirectory 得到下载缓存目录的路径
getExternalStorageDirectory 获取外部存储(SD卡)的路径
getExternalStorageState 获取SD卡的状态
getExternalStoragePublicDirectory 获取SD卡指定类型目录的路径
getStorageState 获得指定目录的状态

为了更好的了解上面的方法,下面用一个测试案例来展示效果:

布局文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:focusable="true"
    android:focusableInTouchMode="true"
    android:orientation="vertical"
    android:padding="10dp" >
    <TextView
        android:id="@+id/tv_file_basic"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textColor="@color/black"
        android:textSize="17sp" />
</LinearLayout>

java文件:

package cn.edu.hznu.demo;
import android.annotation.TargetApi;
import android.os.Build;
import android.os.Build.VERSION;
import android.os.Bundle;
import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.widget.TextView;
public class FileBasicActivity extends AppCompatActivity {
    private TextView tv_file_basic;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_file_basic);
        tv_file_basic = (TextView) findViewById(R.id.tv_file_basic);
        getEnvironmentInfo();
    }
    @TargetApi(Build.VERSION_CODES.KITKAT)
    private void getEnvironmentInfo() {
        String desc = "系统环境(含SD卡)的信息如下:";
        desc = String.format("%s\n 根目录路径:%s", desc,
                Environment.getRootDirectory().getAbsolutePath());
        desc = String.format("%s\n 数据目录路径:%s", desc,
                Environment.getDataDirectory().getAbsolutePath());
        desc = String.format("%s\n 下载缓存目录路径:%s", desc,
                Environment.getDownloadCacheDirectory().getAbsolutePath());
        desc = String.format("%s\n 外部存储(即SD卡)目录路径:%s", desc,
                Environment.getExternalStorageDirectory().getAbsolutePath());
        desc = String.format("%s\n 外部存储(即SD卡)状态:%s", desc,
                Environment.getExternalStorageState());
        desc = String.format("%s\n SD卡的相机目录路径:%s", desc,
                Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM));
        if (VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            desc = String.format("%s\n SD卡的文录路径:%s", desc,
                    Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS));
        }
        desc = String.format("%s\n SD卡的下载目录路径:%s", desc,
                Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS));
        desc = String.format("%s\n SD卡的图片目录路径:%s", desc,
                Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES));
        desc = String.format("%s\n SD卡的视频目录路径:%s", desc,
                Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MOVIES));
        desc = String.format("%s\n SD卡的音乐目录路径:%s", desc,
                Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC));
        tv_file_basic.setText(desc);
    }
}

测试结果如下:
在这里插入图片描述

发布了105 篇原创文章 · 获赞 30 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_43759352/article/details/105496294
今日推荐