From d3948d704d7e735bd89b713c9d82bedc6b3685b0 Mon Sep 17 00:00:00 2001 From: ThankVinci Date: Fri, 11 Jun 2021 21:30:02 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E8=8E=B7=E5=8F=96=E6=96=87?= =?UTF-8?q?=E4=BB=B6md5=E7=A0=81=E7=9A=84=E5=8A=9F=E8=83=BD,=E4=BD=BF?= =?UTF-8?q?=E7=94=A8=E5=88=B0=E7=9A=84=E5=BA=93=E6=98=AF:implementation=20?= =?UTF-8?q?group:=20'commons-codec',=20name:=20'commons-codec',=20version:?= =?UTF-8?q?=20'1.15'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CloudKey/app/build.gradle | 1 + .../CloudKey/Files/FileAdapter.java | 27 ++++++++++++++----- .../thankvinci/CloudKey/Files/FileItem.java | 3 ++- .../CloudKey/Fragment/FileManageFragment.java | 5 ++-- .../main/res/layout/filemanage_fragment.xml | 1 + 开发历程.md | 2 +- 6 files changed, 28 insertions(+), 11 deletions(-) diff --git a/CloudKey/app/build.gradle b/CloudKey/app/build.gradle index 27c17e5..7375d82 100644 --- a/CloudKey/app/build.gradle +++ b/CloudKey/app/build.gradle @@ -35,6 +35,7 @@ dependencies { implementation 'androidx.constraintlayout:constraintlayout:1.1.3' implementation 'androidx.navigation:navigation-fragment:2.2.2' implementation 'androidx.navigation:navigation-ui:2.2.2' + implementation group: 'commons-codec', name: 'commons-codec', version: '1.15' testImplementation 'junit:junit:4.+' androidTestImplementation 'androidx.test.ext:junit:1.1.1' androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' diff --git a/CloudKey/app/src/main/java/com/thankvinci/CloudKey/Files/FileAdapter.java b/CloudKey/app/src/main/java/com/thankvinci/CloudKey/Files/FileAdapter.java index 379729e..c0ff663 100644 --- a/CloudKey/app/src/main/java/com/thankvinci/CloudKey/Files/FileAdapter.java +++ b/CloudKey/app/src/main/java/com/thankvinci/CloudKey/Files/FileAdapter.java @@ -15,6 +15,10 @@ import androidx.recyclerview.widget.RecyclerView; import com.thankvinci.CloudKey.Fragment.FileManageFragment; import com.thankvinci.CloudKey.R; +import org.apache.commons.codec.digest.DigestUtils; + +import java.io.FileInputStream; +import java.io.IOException; import java.util.List; public class FileAdapter extends RecyclerView.Adapter { @@ -51,18 +55,27 @@ public class FileAdapter extends RecyclerView.Adapter { int position = holder.getAdapterPosition(); FileItem fitem = fileList.get(position); //Toast.makeText(v.getContext(),fitem.getName(),Toast.LENGTH_SHORT).show(); + StringBuilder builder = new StringBuilder(); + builder.append(((FileManageFragment)fragment).getDir()); + builder.append("/"); + builder.append(fitem.getName()); if(fitem.isDir()){ - StringBuilder builder = new StringBuilder(); - builder.append(((FileManageFragment)fragment).getDir()); - - builder.append("/"); - builder.append(fitem.getName()); data.putString("dir",builder.toString()); data.putBoolean("isRoot",false); - Toast.makeText(v.getContext(),data.getString("dir"),Toast.LENGTH_SHORT).show(); + //Toast.makeText(v.getContext(),data.getString("dir"),Toast.LENGTH_SHORT).show(); Navigation.findNavController(v).navigate(R.id.action_openDir,data); }else{ - Toast.makeText(v.getContext(),"没有打开除文件夹和压缩包以外的功能",Toast.LENGTH_SHORT).show(); + //Toast.makeText(v.getContext(),fitem.getName()+" "+fitem.isCompress(),Toast.LENGTH_SHORT).show(); + if (fitem.isCompress()){ + try { + String filemd5 = DigestUtils.md5Hex(new FileInputStream(builder.toString())); + Toast.makeText(v.getContext(),"MD5码为:\n"+filemd5,Toast.LENGTH_LONG).show(); + } catch (IOException e) { + e.printStackTrace(); + } + }else{ + Toast.makeText(v.getContext(),"没有打开除文件夹和压缩包以外的功能",Toast.LENGTH_SHORT).show(); + } } } diff --git a/CloudKey/app/src/main/java/com/thankvinci/CloudKey/Files/FileItem.java b/CloudKey/app/src/main/java/com/thankvinci/CloudKey/Files/FileItem.java index b51f742..4201c48 100644 --- a/CloudKey/app/src/main/java/com/thankvinci/CloudKey/Files/FileItem.java +++ b/CloudKey/app/src/main/java/com/thankvinci/CloudKey/Files/FileItem.java @@ -13,6 +13,7 @@ public class FileItem { public FileItem(String name, boolean type, boolean isZip){ this.type = type; this.name = name; + this.isZip = isZip; if(type){ if(isZip){ icon = R.drawable.zip; @@ -32,7 +33,7 @@ public class FileItem { public boolean isDir(){ return !type; } - public boolean isZip(){ + public boolean isCompress(){ return isZip; } } 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 3dda163..3f7d1e5 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 @@ -55,6 +55,8 @@ public class FileManageFragment extends Fragment { dir = data.getString("dir"); Toast.makeText(getActivity(),dir,Toast.LENGTH_SHORT).show(); } + path_edit.setText(dir); + path_edit.setSelection(dir.length()); loadDirectory(); } public String getDir(){ @@ -64,7 +66,6 @@ public class FileManageFragment extends Fragment { ActivityCompat.requestPermissions(getActivity(), new String[]{ //运行时权限 "android.permission.WRITE_EXTERNAL_STORAGE", "android.permission.READ_EXTERNAL_STORAGE"}, 1); - path_edit.setText(dir); File directory = new File(dir); files = directory.listFiles(); if (files == null){ @@ -84,7 +85,6 @@ public class FileManageFragment extends Fragment { 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){ @@ -100,6 +100,7 @@ public class FileManageFragment extends Fragment { }else{ isZip = false; } + index = filename.indexOf("."); if(index != 0){ //隐藏.开头的隐藏文件 FileItem fitem = new FileItem(filename,isFile,isZip); fileItemList.add(fitem); diff --git a/CloudKey/app/src/main/res/layout/filemanage_fragment.xml b/CloudKey/app/src/main/res/layout/filemanage_fragment.xml index cb505a7..ae2c4d9 100644 --- a/CloudKey/app/src/main/res/layout/filemanage_fragment.xml +++ b/CloudKey/app/src/main/res/layout/filemanage_fragment.xml @@ -15,6 +15,7 @@ android:textColor="@color/grey" android:textSize="14dp" android:singleLine="true" + android:gravity="left" tools:ignore="MissingConstraints" />