From 63314b320d0660eb5637779d2946b3e3e35642cd Mon Sep 17 00:00:00 2001 From: ThankVinci Date: Fri, 11 Jun 2021 00:45:21 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=91=E7=8E=B0=E7=89=A9=E7=90=86=E6=9C=BA?= =?UTF-8?q?=E7=9A=84=E9=9A=90=E8=97=8F=E6=96=87=E4=BB=B6=E6=8C=BA=E5=A4=9A?= =?UTF-8?q?=E7=9A=84,=E4=BA=8E=E6=98=AF=E8=AE=BE=E7=BD=AE=E9=BB=98?= =?UTF-8?q?=E8=AE=A4=E9=9A=90=E8=97=8F.=E5=BC=80=E5=A4=B4=E7=9A=84?= =?UTF-8?q?=E9=9A=90=E8=97=8F=E6=96=87=E4=BB=B6,=E5=85=B3=E4=BA=8Efile?= =?UTF-8?q?=E7=B1=BB=E8=8E=B7=E5=8F=96=E5=BD=93=E5=89=8D=E7=9B=AE=E5=BD=95?= =?UTF-8?q?=E4=B8=8B=E7=9A=84=E5=AD=90=E6=96=87=E4=BB=B6,=E5=9C=A8Windows?= =?UTF-8?q?=E4=B8=8A=E9=BB=98=E8=AE=A4=E6=8C=89=E6=96=87=E4=BB=B6=E5=90=8D?= =?UTF-8?q?=E6=8E=92=E5=BA=8F,=E4=BD=86=E6=98=AF=E5=9C=A8Android=E9=87=8C?= =?UTF-8?q?=E5=8D=B4=E6=B2=A1=E6=9C=89,=E6=89=80=E4=BB=A5=E8=A6=81?= =?UTF-8?q?=E5=AF=B9=E6=96=87=E4=BB=B6=E5=92=8C=E6=96=87=E4=BB=B6=E5=A4=B9?= =?UTF-8?q?=E4=BB=A5=E5=8F=8A=E5=90=8D=E5=AD=97=E5=92=8C=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E5=A4=B9=E8=BF=9B=E8=A1=8C=E6=8E=92=E5=BA=8F,=E8=80=83?= =?UTF-8?q?=E8=99=91=E5=88=B0=E6=88=91=E4=BB=AC=E5=8F=AF=E8=83=BD=E8=A6=81?= =?UTF-8?q?=E4=BC=98=E5=85=88=E6=89=BE=E6=96=87=E4=BB=B6,=E6=89=80?= =?UTF-8?q?=E4=BB=A5,=E6=96=87=E4=BB=B6=E5=B0=B1=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E5=9C=A8=E6=96=87=E4=BB=B6=E5=A4=B9=E5=89=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../thankvinci/CloudKey/Files/FileUtils.java | 28 +++++++++++++++++++ .../CloudKey/Fragment/FileManageFragment.java | 15 +++++++--- 开发历程.md | 6 +++- 3 files changed, 44 insertions(+), 5 deletions(-) create mode 100644 CloudKey/app/src/main/java/com/thankvinci/CloudKey/Files/FileUtils.java diff --git a/CloudKey/app/src/main/java/com/thankvinci/CloudKey/Files/FileUtils.java b/CloudKey/app/src/main/java/com/thankvinci/CloudKey/Files/FileUtils.java new file mode 100644 index 0000000..14c1473 --- /dev/null +++ b/CloudKey/app/src/main/java/com/thankvinci/CloudKey/Files/FileUtils.java @@ -0,0 +1,28 @@ +package com.thankvinci.CloudKey.Files; + +import java.io.File; +import java.util.Arrays; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; + +public class FileUtils { + //按照文件,文件夹,文件名次序的顺序进行排序,参考:https://blog.csdn.net/qq_34246164/article/details/111785553 + public static void orderByName(File[] files){ + List fileList = Arrays.asList(files); + Collections.sort(fileList, new Comparator() { + @Override + public int compare(File f1,File f2){ + if(f1.isDirectory() && f2.isFile()){ + return 0; + } + if(f2.isDirectory() && f1.isFile()){ + return -1; + } + return f1.getName().compareTo(f2.getName()); + } + }); + } + //获取文件的MD5码值 + public static void getFileMD5(File f){} +} diff --git a/CloudKey/app/src/main/java/com/thankvinci/CloudKey/Fragment/FileManageFragment.java b/CloudKey/app/src/main/java/com/thankvinci/CloudKey/Fragment/FileManageFragment.java index ce7717c..c565c7a 100644 --- a/CloudKey/app/src/main/java/com/thankvinci/CloudKey/Fragment/FileManageFragment.java +++ b/CloudKey/app/src/main/java/com/thankvinci/CloudKey/Fragment/FileManageFragment.java @@ -12,6 +12,7 @@ import androidx.recyclerview.widget.StaggeredGridLayoutManager; import com.thankvinci.CloudKey.Files.FileAdapter; import com.thankvinci.CloudKey.Files.FileItem; +import com.thankvinci.CloudKey.Files.FileUtils; import com.thankvinci.CloudKey.R; import java.io.File; @@ -51,6 +52,7 @@ public class FileManageFragment extends Fragment { Toast.makeText(getActivity(),root.getAbsolutePath()+"",Toast.LENGTH_SHORT).show(); Toast.makeText(getActivity(),root.canRead()+"",Toast.LENGTH_SHORT).show(); files = root.listFiles(); + FileUtils.orderByName(files); path_edit.setText("/storage/emulated/0"); initDirectory(); } @@ -65,14 +67,15 @@ public class FileManageFragment extends Fragment { private void initDirectory(){ String filename,suffix; boolean isFile,isZip; - int lastIndex; + int lastIndex,index; for(int i = 0;i < files.length;i++){ filename = files[i].getName(); isFile = files[i].isFile(); + index = filename.indexOf("."); if (isFile){ lastIndex = filename.lastIndexOf("."); if(lastIndex == -1){ - suffix = "."; //当文件没有后缀时,不过没什么实际含义就对了 + suffix = ""; //当文件没有后缀时,不过没什么实际含义就对了 }else { suffix = filename.substring(lastIndex); } @@ -84,8 +87,12 @@ public class FileManageFragment extends Fragment { }else{ isZip = false; } - FileItem fitem = new FileItem(filename,isFile,isZip); - fileItemList.add(fitem); + if(index != 0){ //隐藏.开头的隐藏文件 + FileItem fitem = new FileItem(filename,isFile,isZip); + fileItemList.add(fitem); + }else{ + + } } } } diff --git a/开发历程.md b/开发历程.md index 2b5c28a..51ebc8f 100644 --- a/开发历程.md +++ b/开发历程.md @@ -179,6 +179,10 @@ implementation 'androidx.navigation:navigation-ui:2.2.2' **发现当物理机WiFi网络连不上互联网或者没开数据时会闪退,所以要通过广播机制判断当前的网络状态**,之后再改 +添加了文件布局 +代码参考《第二行代码》中对recyclerview的瀑布流应用,需要创建布局除了放置recyclerview的fragment外还需要一个表示recyclerview子项的file文件布局(图标+文字),图标是请一个熟人帮忙设计的.然后图标pressed状态下有一个遮罩,也是要写一个selector来修改样式,所以同样在colors文件中添加我要使用的颜色 -代码参考《第二行代码》中对recyclerview的瀑布流应用,需要创建布局除了放置recyclerview的fragment外还需要一个表示recyclerview子项的file文件布局(图标+文字),图标是请一个熟人帮忙设计的.然后图标pressed状态下有一个遮罩,也是要写一个selector来修改样式,所以同样在colors文件中添加我要使用的颜色 \ No newline at end of file +**2021/6/11** + +发现物理机的隐藏文件挺多的,于是设置默认隐藏.开头的隐藏文件,关于file类获取当前目录下的子文件,在Windows上默认按文件名排序,但是在Android里却没有,所以要对文件和文件夹以及名字和文件夹进行排序,考虑到我们可能要优先找文件,所以,文件就显示在文件夹前 \ No newline at end of file