Android 实现文件夹排序功能的实例代码

按文件名排序

 /**
   * 按文件名排序
   * @param filePath
   */
  public static ArrayList<String> orderByName(String filePath) {
    ArrayList<String> FileNameList = new ArrayList<String>();
    File file = new File(filePath);
    File[] files = file.listFiles();
    List fileList = Arrays.asList(files);
    Collections.sort(fileList, new Comparator<File>() {
      @Override
      public int compare(File o1, File o2) {
        if (o1.isDirectory() && o2.isFile())
          return -1;
        if (o1.isFile() && o2.isDirectory())
          return 1;
        return o1.getName().compareTo(o2.getName());
      }
    });
    for (File file1 : files) {
      if (file1.isDirectory()) {
        FileNameList.add(file1.getName());
      }
    }
    return FileNameList;
  }

基于名称:

/**
   * 按文件名排序
   * @param filePath
   */
  public static ArrayList<String> orderByName(String filePath) {
    ArrayList<String> FileNameList = new ArrayList<String>();
    File file = new File(filePath);
    File[] files = file.listFiles();
    List fileList = Arrays.asList(files);
    Collections.sort(fileList, new Comparator<File>() {
      @Override
      public int compare(File o1, File o2) {
        if (o1.isDirectory() && o2.isFile())
          return -1;
        if (o1.isFile() && o2.isDirectory())
          return 1;
        return o1.getName().compareTo(o2.getName());
      }
    });
    for (File file1 : files) {
      if (file1.isDirectory()) {
        FileNameList.add(file1.getName());
      }
    }
    return FileNameList;
  }

基于最近修改时间:

/**
   * 按文件修改时间排序
   * @param filePath
   */
  public static ArrayList<String> orderByDate(String filePath) {
    ArrayList<String> FileNameList = new ArrayList<String>();
    File file = new File(filePath);
    File[] files = file.listFiles();
    Arrays.sort(files, new Comparator<File>() {
      public int compare(File f1, File f2) {
        long diff = f1.lastModified() - f2.lastModified();
        if (diff > 0)
          return 1;
        else if (diff == 0)
          return 0;
        else
          return -1;// 如果 if 中修改为 返回-1 同时此处修改为返回 1 排序就会是递减
      }
      public boolean equals(Object obj) {
        return true;
      }
    });
    for (File file1 : files) {
      if (file1.isDirectory()) {
        FileNameList.add(file1.getName());
      }
    }
    return FileNameList;
  }

基于大小:

/**
   * 按文件大小排序
   * @param filePath
   */
  public static ArrayList<String> orderBySize(String filePath) {
    ArrayList<String> FileNameList = new ArrayList<String>();
    File file = new File(filePath);
    File[] files = file.listFiles();
    List<File> fileList = Arrays.asList(files);
    Collections.sort(fileList, new Comparator<File>() {
      public int compare(File f1, File f2) {
        long s1 = getFolderSize(f1);
        long s2 = getFolderSize(f2);
        long diff = s1 - s2;
        if (diff > 0)
          return 1;
        else if (diff == 0)
          return 0;
        else
          return -1;// 如果 if 中修改为 返回-1 同时此处修改为返回 1 排序就会是递减
      }
      public boolean equals(Object obj) {
        return true;
      }
    });
    for (File file1 : files) {
      if (file1.isDirectory()) {
        FileNameList.add(file1.getName());
      }
    }
    return FileNameList;
  }
  /**
   * 获取文件夹大小
   * @param file File实例
   * @return long
   */
  public static long getFolderSize(File file) {
    long size = 0;
    try {
      java.io.File[] fileList = file.listFiles();
      for (int i = 0; i < fileList.length; i++) {
        if (fileList[i].isDirectory()) {
          size = size + getFolderSize(fileList[i]);
        } else {
          size = size + fileList[i].length();
        }
      }
    } catch (Exception e) {
      e.printStackTrace();
    }
    return size;
  }

总结

以上所述是小编给大家介绍的Android 实现文件夹排序功能的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • Android实现列表数据按名称排序、中英文混合排序

    有时候我们需要多列表中的数据进行特定的排序,最近项目中用到的是按名称排序,所以简单来说一下: 效果图: 排序方法: Collections.sort(students, new SortChineseName()); for (Student s : students) { Log.e("David", "名称正序排列:" + s.getName()); } Log.d("David", "-----------------------

  • Android编程实现对文件夹里文件排序的方法

    本文实例讲述了Android编程实现对文件夹里文件排序的方法.分享给大家供大家参考,具体如下: private int mFileSize = 0; private List<String> mPathString = new ArrayList<String>(); private boolean sortFolder(String path) { if (path == null || StringUtil.isEmpty(path)) return false; File[]

  • Android基于名称、修改时间、大小实现文件夹排序

    本文实例为大家分享了Android实现文件夹排序的具体代码,供大家参考,具体内容如下 基于名称: /** * 按文件名排序 * @param filePath */ public static ArrayList<String> orderByName(String filePath) { ArrayList<String> FileNameList = new ArrayList<String>(); File file = new File(filePath); F

  • Android仿微信联系人按字母排序

    App只要涉及到联系人的界面,几乎都是按照字母排序以及导航栏的方式.既然这个需求这么火,于是开始学习相关内容,此篇文章是我通过参考网上资料独立编写和总结的,希望多多少少对大家有所帮助,写的不好,还请各位朋友指教. 效果图如下: 实现这个效果,需要三个知识点 : 1:将字符串 进行拼音分类 2:ExpandableListView 二级扩展列表 3:右边字母分类View 我们先一个一个来了解解决方案,再上代码. 实现字母分类: 字母分类又分为三个小要点:一个是将中文转化为拼音,一个是实现按照字母的

  • Android仿微信联系人字母排序效果

    本文实例为大家分享了Android联系人字母排序的具体代码,供大家参考,具体内容如下 实现思路:首先说下布局,整个是一个相对布局,最下面是一个listview,listview上面是一个自定义的view(右边显示字母),最上面是一个textview(屏幕中间的方块). 首先说一下右边自定义view,字母是画到view上面的,首先计算一下view的高度,然后除以存放字母数组的长的,得到每个字符的高度:每个字母的宽度都是一样的,所以这里直接设置30sp: listview显示的是108个梁山好汉的名

  • Android实现ListView的A-Z字母排序和过滤搜索功能 实现汉字转成拼音

    直入主题,今天给大家带来ListView的A-Z字母排序和过滤搜索功能并且实现汉字转成拼音的功能,我们知道一般我们对联系人,城市列表等实现A-Z的排序,因为联系人和城市列表我们可以直接从数据库中获取他的汉字拼音,而对于一般的数据,我们怎么实现A-Z的排序,我们需要将汉字转换成拼音就行了,接下来就带大家实现一般数据的A-Z排序功能,首先先看下效果图 上面是一个带删除按钮的EditText,我们在输入框中输入可以自动过滤出我们想要的东西,当输入框中没有数据自动替换到原来的数据列表,然后下面一个Lis

  • Android 实现文件夹排序功能的实例代码

    按文件名排序 /** * 按文件名排序 * @param filePath */ public static ArrayList<String> orderByName(String filePath) { ArrayList<String> FileNameList = new ArrayList<String>(); File file = new File(filePath); File[] files = file.listFiles(); List fileL

  • Node.js 文件夹目录结构创建实例代码

    第一次接触NodeJS的文件系统就被它的异步的响应给搞晕了,后来发现NodeJS判断文件夹是否存在和创建文件夹是还有同步方法的,但是还是想尝试使用异步的方法去实现. 使用的方法: fs.exists(path, callback); fs.mkdir(path, [mode], callback); 实现文件夹目录结构的创建代码实现如下: //创建文件夹 function mkdir(pos, dirArray,_callback){ var len = dirArray.length; con

  • Android中文件的压缩和解压缩实例代码

    使用场景 当我们在应用的Assets目录中需要加入文件时,可以直接将源文件放入,但这样会造成打包后的apk整体过大,此时就需要将放入的文件进行压缩.又如当我们需要从服务器中下载文件时,如果下载源文件耗时又消耗流量,较大文件需要压缩,可以使得传输效率大大提高.下面我们就学习下基本的文件压缩和解压缩.Java中提供了压缩和解压缩的输入输出流 public static void zip(String src,String dest) throwsIOException { //定义压缩输出流 Zip

  • Vue实现拖放排序功能的实例代码

    Vue中实现拖放排序,啥也不说,贴上代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <style> ul { min-height: 100px; width: 200px; margin: 20px auto; backgrou

  • Python FTP两个文件夹间的同步实例代码

    具体代码如下所示: # -*- coding: utf-8 -*- ''''''' ftp自动检测源文件夹的更新,将源文件夹更新的内容拷贝到目标文件夹中 使用树的层序遍历算法,支持深度目录拷贝 ''' import os from ftplib import FTP import os,sys,string,datetime,time import shutil import socket class MyUpdateMonitor(object): def __init__(self, hos

  • Android 实现自定义圆形listview功能的实例代码

    最近遇到一个需求需要圆形listview作为悬浮窗,费了九牛二虎之力终于开发出来了,特别有成就感,下面分享下案例,项目原因,只能分享一部分供大家参考 1.有图有真相 下面就来讲解下代码: 1.自定义listview import android.content.Context; import android.content.res.TypedArray; import android.graphics.Bitmap; import android.graphics.BitmapFactory;

  • java实现文件夹上传功能实例代码(SpringBoot框架)

    目录 前言 一.前端如何设置上传组件并将资源上传到后台服务 1)首先我们需要新建一个用来提交文件夹的form表单 2)然后我们添加自己框架内的一些按钮来触发该隐藏的表单 二.后台如何接收处理文件夹表单数据 总结 前言 有时我们后台管理等服务可能会有这样一个简单需求,就是根据文件夹将整个文件夹下的所有资源都上传到我们的服务器上,本人也是搜索了大量资料,最终以最简单便捷的方式实现该功能,具体操作步骤如下 一.前端如何设置上传组件并将资源上传到后台服务 这里的项目框架为若依VUE版本,下面将核心的代码

  • Android 下载文件通知栏显示进度条功能的实例代码

    1.使用AsyncTask异步任务实现,调用publishProgress()方法刷新进度来实现(已优化) public class MyAsyncTask extends AsyncTask<String,Integer,Integer> { private Context context; private NotificationManager notificationManager; private NotificationCompat.Builder builder; public M

  • Android 中TeaPickerView数据级联选择器功能的实例代码

    Github地址 YangsBryant/TeaPickerView (Github排版比较好,建议进入这里查看详情,如果觉得好,点个star吧!) 引入module allprojects { repositories { google() jcenter() maven { url 'https://www.jitpack.io' } } } implementation 'com.github.YangsBryant:TeaPickerView:1.0.2' 主要代码 public cla

随机推荐