Java 中按文件名称分类,按文件大小分类,按照文件类型分类,按照最后修改时间分类的工具类
在此博客中用到了文件操作的工具類,可以連接
Java中實現(xiàn)復(fù)制文件到文件,復(fù)制文件到文件夾,復(fù)制文件夾到文件,刪除文件,刪除文件夾,移動文件,移動文件夾的工具類
package cn.edu.hactcm.cfcms.utils;
import java.io.File;
import java.util.HashSet;
import java.util.Set;
import javax.swing.JOptionPane;
/**
?* 文件分類中用到的所有工具類
?* CFMS??? :Computer files management system?
?* version :1.0 2013-3-3 上午02:28:40
?*/
public class ClassifyFolderUtils {
?/**
? * 在from 這個文件夾里創(chuàng)建 innerFolderName 這個文件夾,如果前者內(nèi)部的文
? * 件中包含關(guān)鍵字innerFolderName,那么把文件拷貝到innerFolderName文件夾里面去
? *
? * @param innerFolderName
? * @param from
? */
?public static void NameClassify(String innerFolderName,String from){
??File fromFile = new File(from);
??
??//如果選中的文件夾是一個文件夾,那么將不做任何操作
??if (from.isEmpty()) {
???return;
??} else {
???//獲得文件里面的所有文件
???File[] listFiles = fromFile.listFiles();
???
???//如果選中的文件不是空文件,在這個文件里面創(chuàng)建要分類的文件
???String newPath = from + File.separator + innerFolderName;
???File newFile = new File(newPath);
???
???for (int i = 0; i < listFiles.length; i++) {
????if (listFiles[i].isDirectory()) {
?????//判斷這個文件夾中是否有這個關(guān)鍵字,如果有的話就拷貝目錄了到制定目錄內(nèi)了。
?????if (listFiles[i].getName().indexOf(innerFolderName) != -1) {
??????//獲得這個文件夾的名稱,在指定的文件內(nèi)創(chuàng)建這個目錄
??????if (!newFile.exists()) {
???????newFile.mkdir();
??????}
??????
??????FileOperationUtils.copyFolder2Folder(listFiles[i].getPath(), newPath);
?????} else {//如果沒有就跳出這個循環(huán)
??????continue;
?????}
????} else {
?????//判斷這個文件是否含有名稱關(guān)鍵字
?????if (listFiles[i].getName().indexOf(innerFolderName) != -1) {
??????String destFilePath = newPath + File.separator + listFiles[i].getName();
??????if (!newFile.exists()) {
???????newFile.mkdir();
???????
??????}
??????FileOperationUtils.copyFileToFile(listFiles[i].getPath() , destFilePath);
?????} else {
??????continue;
?????}
????}
???}
??}
??JOptionPane.showMessageDialog(null, "操作成功,請查看指定目錄!","提示消息",JOptionPane.WARNING_MESSAGE);
?}
?
?public static void TypeClassify(String path){
??File destFile = new File(path);
??//判斷是否是文件夾,文件夾是否為空
??if (destFile.isFile()) {
???JOptionPane.showMessageDialog(null, "對不起,不能對文件進(jìn)行按類型分類,請?zhí)顚懳募A路徑");
???return ;
??}
??
??if (!destFile.exists()) {
???JOptionPane.showMessageDialog(null, "對不起,所指定文件夾不存在");
???return ;
??}
??
??typeOperation(path, destFile);
??
??//提示消息
??JOptionPane.showMessageDialog(null, "操作成功,請查看指定目錄!","提示消息",JOptionPane.WARNING_MESSAGE);
?}
?/**
? * @param path
? * @param destFile
? */
?private static void typeOperation(String path, File destFile) {
??File[] listFiles = destFile.listFiles();
??if (listFiles.length == 0) {
???return ;
??}
??
??//條件都成立了的話,就在這個路徑下面創(chuàng)建一個文件
??String newPath = path + File.separator + "這里存放的是按照類型分類之后的文件所在位置";
??File newFile = new File(newPath);
??if (!newFile.exists()) {
???newFile.mkdirs();
??}
??
??Set<String> typesSet = new HashSet<String>();
??for (File file2 : listFiles) {
???if (file2.isDirectory()) {
????//進(jìn)行遞歸
????typeOperation(path, file2);
???} else {
????String filePath = file2.getPath();
????//截取后綴名
????String suffix = filePath.substring(filePath.lastIndexOf(".") + 1,filePath.length());
????//文件類型文件夾所在的位置
????String newTypePath = newPath + File.separator + suffix;
????//使用set集合存儲后綴名,讓這些重復(fù)的后綴名只存在一次,如果沒有才存入這個結(jié)合中
????if (!typesSet.contains(suffix)) {
?????typesSet.add(suffix);
?????//在新創(chuàng)建的文件夾里面創(chuàng)建這個后綴名命名的文件夾。
?????new File(newTypePath).mkdir();
????}
????
????FileOperationUtils.copyFile2Folder(file2.getPath(), newTypePath);
???}
??}
?}
?
?/**
? * 按大小分類
? * @param sizeNameValue :按名稱分類的文件名稱
? * @param folderPath??? : 對那個文件夾進(jìn)行按照大小分類
? * @param min?????????? : 文件最小值
? * @param max?????????? : 文件最大值
? * @param unit1???????? : 最小值的單位
? * @param unit2???????? : 最大值的單位
? */
?public static void SizeClassify(String sizeNameValue, String folderPath,
???String min, String max, String unit1, String unit2) {
??boolean b = DataValidate.validate(min, max);
??if (!b) {
???return;
??} else {
???Integer minValue = Integer.parseInt(min);
???Long minSize = FileInfoUtils.judgeUnit(unit1)*minValue;
???Integer maxValue = Integer.parseInt(max);
???Long maxSize = FileInfoUtils.judgeUnit(unit2)*maxValue;
???
???String newPath = folderPath + File.separator + sizeNameValue;
???File newFile = new File(newPath);
???if (!newFile.exists()) {
????newFile.mkdir();
???}
???
???//開始按照大小分類
???File fromFile = new File(folderPath);
???File[] listFiles = fromFile.listFiles();
???//判斷這個文件夾里面是否有文件,如果有文件才可以,否者直接返回
???if (listFiles.length > 0) {
????for (File file : listFiles) {
?????long fileSize = FileInfoUtils.getFileSize(file.getPath());
?????if (fileSize > minSize && fileSize < maxSize) {
??????FileOperationUtils.copyFileInAllType(file.getPath(), newPath);
?????}
????}
???} else {
????JOptionPane.showMessageDialog(null, "對不起,你選中的文件夾為空!","提示信息",JOptionPane.WARNING_MESSAGE);
????return ;
???}
??}
??//提示消息
??JOptionPane.showMessageDialog(null, "操作成功,請查看指定目錄!","提示消息",JOptionPane.WARNING_MESSAGE);
?}
?
?/**
? * 按照時間分類
? * @param sizeNameValue? :時間分類的名稱
? * @param folderPath???? : 這是一個文件夾路徑,指定要對那個文件進(jìn)行操作
? * @param datetime1????? : 這是時間點一
? * @param datetime2????? : 這是時間點二
? */
?public static void TimeClassify(String timeNameValue, String folderPath,
???String datetime1, String datetime2) {
??//獲得兩個時間的時間毫秒值
??long time1 = new DateFormatUtils().getMillisecondsByTimeString(datetime1);
??long time2 = new DateFormatUtils().getMillisecondsByTimeString(datetime2);
??long timeMax = (time1 > time2) ? time1 : time2;
??long timeMin = (time1 > time2) ? time2 : time1;
??if (time1 == time2) {
???JOptionPane.showMessageDialog(null, "對不起,兩個時間的值不能相同!","提示消息",JOptionPane.WARNING_MESSAGE);
???return;
??}
??
??// 判斷這個文件夾里面是否有文件,如果沒有文件,那么就返回
??File file = new File(folderPath);
??File[] listFiles = file.listFiles();
??if (listFiles.length == 0) {
???return;
??}
??// 如果有文件,創(chuàng)建文件夾,然后執(zhí)行其他的工作
??String newPath = folderPath + File.separator + timeNameValue;
??File newFile = new File(newPath);
??if (!newFile.exists()) {
???newFile.mkdir();
??}
??
??for (File file2 : listFiles) {
???long lastModifiedTime = file2.lastModified();
???if (lastModifiedTime <= timeMax && lastModifiedTime >= timeMin) {
????FileOperationUtils.copyFileInAllType(file2.getPath(), newPath);
???}
??}
??//提示消息
??JOptionPane.showMessageDialog(null, "操作成功,請查看指定目錄!","提示消息",JOptionPane.WARNING_MESSAGE);
?}
}
總結(jié)
以上是生活随笔為你收集整理的Java 中按文件名称分类,按文件大小分类,按照文件类型分类,按照最后修改时间分类的工具类的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SimpleDateFormat 按照
- 下一篇: 国家助学贷款申请表怎么填