根据文件或文件夹的文件排序 [英] Sorting of files according to file or folder

查看:123
本文介绍了根据文件或文件夹的文件排序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有多个文件和文件夹......现在我想根据文件名进行排序,并首先folders.all文件夹,然后将所有文件应该display.i有变量,以检查是否在特定的名称的数组数组的索引是他们的文件或folder.but无法思考逻辑..
我附上我的一些codeS的。

i have an array of names which have multiple files and folders...now i want to sort the names according to files and folders.all folders first and then all files should display.i have the variable to check whether on particular index of array their is file or folder.but unable to think the logic.. i am attaching some of my codes.

////////////////////////////////
案件0://按名称排序
                        {

//////////////////////////////// case 0://Sort By Name {

                        if(m_sortType == SORT_BY_NAME && temp==false)
                        {
                            m_sortType = SORT_BY_NAME;
                            m_sortOrder=SORT_ORDER_DESCENDING;
                            temp= true;
                            //Log.d("SORTING", "SORT - NAME - DES");
                        }
                        else
                        {
                            m_sortType = SORT_BY_NAME;
                            m_sortOrder=SORT_ORDER_ASCENDING;
                            temp=false;
                            //Log.d("SORTING", "SORT - NAME - AES");
                        }

                        //Log.d("SORTING", "Data bfore sort");
                        for (int k=0; k<m_adapter.m_env.m_count; k++)
                            //Log.d("SORTING DATA", k + ": " + m_adapter.m_env.m_fs.get(m_SortArray[k]).m_name);

                        m_adapter.sortListing(m_sortType,m_sortOrder);

                        //Log.d("SORTING", "Data after sort");
                        for (int k=0; k<m_adapter.m_env.m_count; k++)
                            //Log.d("SORTING DATA", k + ": " + m_adapter.m_env.m_fs.get(m_SortArray[k]).m_name);

                        //Refresh();
                        break;
                    }

////////////////
私人无效sortListing(INT sortType,诠释中将sortOrder)
        {
            m_sortType = sortType;
            m_sortOrder =中将sortOrder;
            Arrays.sort(m_SortArray,新的比较(){

//////////////// private void sortListing(int sortType, int sortOrder) { m_sortType = sortType; m_sortOrder = sortOrder; Arrays.sort( m_SortArray , new Comparator() {

            public int compare(Integer a1, Integer a2)
            {

                if(m_sortType == SORT_BY_NAME)
                {
                    String s1 = null,s2 = null;
                    FileFolderEnum t2 = null;
                    FileFolderEnum t1 = null;
                    int i;
                    if(m_sortOrder==SORT_ORDER_ASCENDING)
                    {
                        s1 = m_env.m_fs.get(a1).m_name;
                        s2 = m_env.m_fs.get(a2).m_name;
                        t1 = m_env.m_fs.get(a1).m_type;
                        t2 = m_env.m_fs.get(a2).m_type;
                    }
                    else if(m_sortOrder==SORT_ORDER_DESCENDING)
                    {
                        s1 = m_env.m_fs.get(a2).m_name;
                        s2 = m_env.m_fs.get(a1).m_name;
                        t1 = m_env.m_fs.get(a2).m_type;
                        t2 = m_env.m_fs.get(a1).m_type;
                    }
                    //Log.d("SORTING COMPARE", "(" + Integer.toString(a1)+") s1: " + s1);
                    //Log.d("SORTING COMPARE", "(" + Integer.toString(a2)+") s2: " + s2);
                    if((t1.equals(CFileFolder.FileFolderEnum.FFE_FOLDER)&&(t2.equals(CFileFolder.FileFolderEnum.FFE_FOLDER))))
                    {
                         i=s1.compareToIgnoreCase (s2);
                    }
                     i=s1.compareToIgnoreCase (s2);

                    //Log.d("SORTING COMPARE", "s1.compareTo(s2): " + Integer.toString(i));
                    return i;
                }

///////////////////

///////////////////

推荐答案

code我从我自己的文件浏览器拉。如你所愿使用。

Code I pulled from my own file browser. Use as you wish. :

File[] directoryList = currentFolder.listFiles(); 
if (directoryList != null) {
   List<File> directoryListing = new ArrayList<File>();
   directoryListing.addAll(Arrays.asList(directoryList));
   Collections.sort(directoryListing, new SortFileName());
   Collections.sort(directoryListing, new SortFolder());
}


//sorts based on the files name
public class SortFileName implements Comparator<File> {
    @Override
    public int compare(File f1, File f2) {
          return f1.getName().compareTo(f2.getName());
    }
}

//sorts based on a file or folder. folders will be listed first
public class SortFolder implements Comparator<File> {
    @Override
    public int compare(File f1, File f2) {
         if (f1.isDirectory() == f2.isDirectory())
            return 0;
         else if (f1.isDirectory() && !f2.isDirectory())
            return -1;
         else
            return 1;
          }
}

这篇关于根据文件或文件夹的文件排序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆