Android文件File

2020-10-12  本文已影响0人  Anwfly

一、SD的使用SD卡文件权限

sdk卡的读写权限

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

二、SD的使用SD卡挂载状态判断

//获取sdk 的挂载状态
String status = Environment.getExternalStorageState();
// 判断sdk 的挂载状态
if (status.equalsIgnoreCase(Environment.MEDIA_MOUNTED)) {
     // 此时SD是可读写的
    Toast.makeText(MainActivity.this, "SD卡存在", Toast.LENGTH_LONG).show();
} else if (status.equalsIgnoreCase(Environment.MEDIA_MOUNTED_READ_ONLY)) {
    Toast.makeText(MainActivity.this, "虽然SD存在,但是为只读状态",                                                                                           Toast.LENGTH_LONG).show();
} else if (status.equalsIgnoreCase(Environment.MEDIA_REMOVED)) {
    Toast.makeText(MainActivity.this, "SD不存在", Toast.LENGTH_LONG).show();
} else if (status.equalsIgnoreCase(Environment.MEDIA_SHARED)) {
    Toast.makeText(MainActivity.this, "虽然SD卡存在,但是正与PC等相连接",                                                                                       Toast.LENGTH_LONG).show();
} else if (status.equalsIgnoreCase(Environment.MEDIA_BAD_REMOVAL)) {
    Toast.makeText(MainActivity.this, "SD卡在挂载状态下被错误取出",                                                                                           Toast.LENGTH_LONG).show();
} else if (status.equalsIgnoreCase(Environment.MEDIA_CHECKING)) {
    Toast.makeText(MainActivity.this, "正在检查SD卡", Toast.LENGTH_LONG).show();
} else if (status.equalsIgnoreCase(Environment.MEDIA_NOFS)) {
    Toast.makeText(MainActivity.this, "虽然SD卡存在,但其文件系统不被支持",                                                                                     Toast.LENGTH_LONG).show();
} else if (status.equalsIgnoreCase(Environment.MEDIA_UNMOUNTABLE)) {
    Toast.makeText(MainActivity.this, "虽然SD卡存在,但是无法被挂载",                                                                                           Toast.LENGTH_LONG).show();
} else if (status.equalsIgnoreCase(Environment.MEDIA_UNMOUNTED)) {
    Toast.makeText(MainActivity.this, "虽然SD卡存在,但是未被挂载",                                                                                           Toast.LENGTH_LONG).show();
} else {
    Toast.makeText(MainActivity.this, "其他原因", Toast.LENGTH_LONG).show();
}

三、SD的使用SD卡根目录文件路径获取 File使用(文件夹和文件的创建)

//get External 外置  Storage 存储      State 状态
// 环境操作类   获取 sdk 路径    判断sdk 的状态
String state = Environment.getExternalStorageState();
if( state.equalsIgnoreCase(Environment.MEDIA_MOUNTED)){
    Toast.makeText(MainActivity.this, "sdk存在", Toast.LENGTH_LONG).show();
    
    /// Directory   dir   目录  文件夹
    //获得 sdk 的 路径
    // f.getAbsolutePath()  获取 文件   或者  文件夹的  绝对路径
    File f = Environment.getExternalStorageDirectory();
    Log.i("tag", "===> "+f.getAbsolutePath());
    
    //创建文件对象
    File file = new File(f,"abcd.txt");
    try {
                       //创建文件
        boolean createNewFile = file.createNewFile();
        Log.i("tag", "createNewFile====> "+createNewFile);
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

四、SD的使用遍历指定SD卡目录下面所有文件(递归以及文件过滤器)

//递归      方法 调用自身      注意:入口  出口       递归不能太深 不然会内存溢出
File f = Environment.getExternalStorageDirectory();
//getText(f);
getTextFilter(f);

// 递归方法   查询所有符合条件的内容(本案例是查找后缀为 .png 的文件)
public void getText(File f){
    //获得   它里面的所有文件和 文件夹对象
    File[] listFiles = f.listFiles();
    if(listFiles!=null){
        for (File file : listFiles) {
            // 遍历  判断  根目录下  所有文件  和文件夹对象
            // 同时   是文件   以 .txt结尾   输出
            if( file.isFile() && file.getName().endsWith(".png")){
                System.out.println(file.getName());
                // 存入 集合     交给适配器  
                
            }else{// 是文件夹     继续打开    获得   它里面的所有文件和 文件夹对象
                getText(file);
            }
        }
    }
}
// 使用过滤器  递归
public void getTextFilter(File f){
    //获得   它里面的所有文件和 文件夹对象
        if(f!=null){
            File[] listFiles = f.listFiles(new FileFilter() {
                @Override
                public boolean accept(File pathname) {
                    if(pathname.isFile() && pathname.getName().endsWith(".png")){
                        //System.out.println(pathname.getName());
                        return true;
                    }else{
                        getTextFilter(pathname);
                    }
                    return false;
                }
            });
        if(listFiles!=null){
            for (File file : listFiles) {
                System.out.println(file.getName());
            }
        }
    }
}

相关文章File

上一篇下一篇

猜你喜欢

热点阅读