All Downloads are FREE. Search and download functionalities are using the official Maven repository.

club.zhcs.utils.FileUtils Maven / Gradle / Ivy

package club.zhcs.utils;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.text.DecimalFormat;

import org.nutz.lang.Files;
import org.nutz.lang.Strings;
import org.nutz.log.Log;
import org.nutz.log.Logs;

/**
 * @author 贵源 
* create at 2014年5月10日 */ public class FileUtils { private FileUtils() { } /** * 清除SVN * * @param dir 待清除的目录 * @return 清除成功状态标识 */ public static boolean cleanSvn(File dir) { try { Files.cleanAllFolderInSubFolderes(dir, ".svn"); } catch (IOException e) { log.error(e.getMessage()); return false; } return true; } /** * 统计文件或者目录下的java代码的行数 * * @param file 文件或者目录 * @return java代码行数 */ public static long countJavaCodeLines(File file) { return countLines(file, ".java"); } public static double getDirSize(File file) { if (file.exists()) { if (file.isDirectory()) { File[] children = file.listFiles(); double size = 0; for (File f : children) {size += getDirSize(f);} return size; } else { return file.length(); } } else { return 0.0; } } /** * 转换文件大小 * * @param length 文件长度 * @return 文件大小字串描述 */ public static String formetFileSize(double length) { DecimalFormat df = new DecimalFormat("#.00"); String fileSizeString = ""; if (length < 1024) { fileSizeString = df.format(length) + "B"; } else if (length < 1048576) { fileSizeString = df.format(length / 1024) + "K"; } else if (length < 1073741824) { fileSizeString = df.format(length / 1048576) + "M"; } else { fileSizeString = df.format(length / 1073741824) + "G"; } return fileSizeString; } /** * 计算文件行数 * * @param file 文件(非目录类型) * @return 行数 */ public static long countLine(File file) { long target = 0; try (BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(file)))) { String line = null; while ((line = reader.readLine()) != null) { log.debug(line); target++; } } catch (IOException e) { log.error(e.getMessage()); } return target; } /** * 统计文件或者目录下的指定类型文件的行数 * * @param file 文件或者目录 * @param suf 扩展名 * @return 行数 */ public static long countLines(File file, String suf) { long target = 0; if (file.isFile() && file.getName().endsWith(suf)) { return countLine(file); } else if (file.isFile()) { return 0; } else if (file.isDirectory()) { File[] files = file.listFiles(); for (File f : files) { target += countLines(f, suf); } } return target; } /** * 快速查找 * * @param dir 基目录 * @param name 待查找文件名 * @return 文件 */ public static File fastFindFile(File dir, String name) { return fastFindFile(dir, name, 1); } /** * 快速查找文件 * * @param dir 基目录 * @param name 文件名 * @param method 查找方法 1 全等查询 2 模糊查找 3 忽略大小写全等 4忽略大小写模糊 * @return 文件 */ public static File fastFindFile(File dir, String name, int method) { File target = null; File[] dirs = Files.dirs(dir);// 获取目录 File[] files = Files.files(dir, name);// 获取文件 // 优先扫描文件 if (files != null) { for (File file : files) { if (matchs(file.getName(), name, method)) { return file; } } } // 然后扫目录 if (dirs != null) { for (File file : dirs) { target = fastFindFile(file, name, method); if (target != null) { return target; } } } return target; } private static boolean matchs(String fileName, String name, int method) { switch (method) { case 1: return Strings.equals(fileName, name); case 2: return fileName.endsWith(name); case 3: return Strings.equals(fileName.toUpperCase(), name.toUpperCase()); default: return fileName.toUpperCase().endsWith(name.toUpperCase()); } } public static File fastFindFile(String dir, String name) { return fastFindFile(new File(dir), name, 1); } /** * 快速查找 * * @param dir 基目录 * @param name 待查找文件名 * @return 文件 */ public static File fastFindFileLikeName(File dir, String name) { return fastFindFile(dir, name, 2); } /** * 基本实现 文件查找 * * @param dir 查找的开始位置 * @param name 查找的文件的名字 * @return 文件 */ public static File findFile(File dir, String name) { File target = null; File[] files = dir.listFiles(); if (files != null) { for (File file : files) { if (file.isFile() && Strings.equals(file.getName(), name)) { return file; } else if (file.isDirectory()) { target = findFile(file, name); if (target != null) { return target; } } } } return target; } private static final Log log = Logs.get(); }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy