zoukankan      html  css  js  c++  java
  • FileToolkit 文件工具箱

      1 import org.apache.commons.io.FileUtils; 
      2 import org.apache.commons.io.filefilter.*; 
      3 import org.apache.commons.logging.Log; 
      4 import org.apache.commons.logging.LogFactory;
      5 
      6 import java.io.*;
      7 
      8 /** 
      9 * 文件工具箱 
     10 * 
     11 * @author leizhimin 2008-12-15 13:59:16 
     12 */ 
     13 public final class FileToolkit { 
     14         private static final Log log = LogFactory.getLog(FileToolkit.class);
     15 
     16         /** 
     17          * 复制文件或者目录,复制前后文件完全一样。 
     18          * 
     19          * @param resFilePath 源文件路径 
     20          * @param distFolder    目标文件夹 
     21          * @IOException 当操作发生异常时抛出 
     22          */ 
     23         public static void copyFile(String resFilePath, String distFolder) throws IOException { 
     24                 File resFile = new File(resFilePath); 
     25                 File distFile = new File(distFolder); 
     26                 if (resFile.isDirectory()) { 
     27                         FileUtils.copyDirectoryToDirectory(resFile, distFile); 
     28                 } else if (resFile.isFile()) { 
     29                         FileUtils.copyFileToDirectory(resFile, distFile, true); 
     30                 } 
     31         }
     32 
     33         /** 
     34          * 删除一个文件或者目录 
     35          * 
     36          * @param targetPath 文件或者目录路径 
     37          * @IOException 当操作发生异常时抛出 
     38          */ 
     39         public static void deleteFile(String targetPath) throws IOException { 
     40                 File targetFile = new File(targetPath); 
     41                 if (targetFile.isDirectory()) { 
     42                         FileUtils.deleteDirectory(targetFile); 
     43                 } else if (targetFile.isFile()) { 
     44                         targetFile.delete(); 
     45                 } 
     46         }
     47 
     48         /** 
     49          * 移动文件或者目录,移动前后文件完全一样,如果目标文件夹不存在则创建。 
     50          * 
     51          * @param resFilePath 源文件路径 
     52          * @param distFolder    目标文件夹 
     53          * @IOException 当操作发生异常时抛出 
     54          */ 
     55         public static void moveFile(String resFilePath, String distFolder) throws IOException { 
     56                 File resFile = new File(resFilePath); 
     57                 File distFile = new File(distFolder); 
     58                 if (resFile.isDirectory()) { 
     59                         FileUtils.moveDirectoryToDirectory(resFile, distFile, true); 
     60                 } else if (resFile.isFile()) { 
     61                         FileUtils.moveFileToDirectory(resFile, distFile, true); 
     62                 } 
     63         }
     64 
     65 
     66         /** 
     67          * 重命名文件或文件夹 
     68          * 
     69          * @param resFilePath 源文件路径 
     70          * @param newFileName 重命名 
     71          * @return 操作成功标识 
     72          */ 
     73         public static boolean renameFile(String resFilePath, String newFileName) { 
     74                 String newFilePath = StringToolkit.formatPath(StringToolkit.getParentPath(resFilePath) + "/" + newFileName); 
     75                 File resFile = new File(resFilePath); 
     76                 File newFile = new File(newFilePath); 
     77                 return resFile.renameTo(newFile); 
     78         }
     79 
     80         /** 
     81          * 读取文件或者目录的大小 
     82          * 
     83          * @param distFilePath 目标文件或者文件夹 
     84          * @return 文件或者目录的大小,如果获取失败,则返回-1 
     85          */ 
     86         public static long genFileSize(String distFilePath) { 
     87                 File distFile = new File(distFilePath); 
     88                 if (distFile.isFile()) { 
     89                         return distFile.length(); 
     90                 } else if (distFile.isDirectory()) { 
     91                         return FileUtils.sizeOfDirectory(distFile); 
     92                 } 
     93                 return -1L; 
     94         }
     95 
     96         /** 
     97          * 判断一个文件是否存在 
     98          * 
     99          * @param filePath 文件路径 
    100          * @return 存在返回true,否则返回false 
    101          */ 
    102         public static boolean isExist(String filePath) { 
    103                 return new File(filePath).exists(); 
    104         }
    105 
    106         /** 
    107          * 本地某个目录下的文件列表(不递归) 
    108          * 
    109          * @param folder ftp上的某个目录 
    110          * @param suffix 文件的后缀名(比如.mov.xml) 
    111          * @return 文件名称列表 
    112          */ 
    113         public static String[] listFilebySuffix(String folder, String suffix) { 
    114                 IOFileFilter fileFilter1 = new SuffixFileFilter(suffix); 
    115                 IOFileFilter fileFilter2 = new NotFileFilter(DirectoryFileFilter.INSTANCE); 
    116                 FilenameFilter filenameFilter = new AndFileFilter(fileFilter1, fileFilter2); 
    117                 return new File(folder).list(filenameFilter); 
    118         }
    119 
    120         /** 
    121          * 将字符串写入指定文件(当指定的父路径中文件夹不存在时,会最大限度去创建,以保证保存成功!) 
    122          * 
    123          * @param res            原字符串 
    124          * @param filePath 文件路径 
    125          * @return 成功标记 
    126          */ 
    127         public static boolean string2File(String res, String filePath) { 
    128                 boolean flag = true; 
    129                 BufferedReader bufferedReader = null; 
    130                 BufferedWriter bufferedWriter = null; 
    131                 try { 
    132                         File distFile = new File(filePath); 
    133                         if (!distFile.getParentFile().exists()) distFile.getParentFile().mkdirs(); 
    134                         bufferedReader = new BufferedReader(new StringReader(res)); 
    135                         bufferedWriter = new BufferedWriter(new FileWriter(distFile)); 
    136                         char buf[] = new char[1024];         //字符缓冲区 
    137                         int len; 
    138                         while ((len = bufferedReader.read(buf)) != -1) { 
    139                                 bufferedWriter.write(buf, 0, len); 
    140                         } 
    141                         bufferedWriter.flush(); 
    142                         bufferedReader.close(); 
    143                         bufferedWriter.close(); 
    144                 } catch (IOException e) { 
    145                         flag = false; 
    146                         e.printStackTrace(); 
    147                 } 
    148                 return flag; 
    149         } 
    150 } 
    151 -------------------------------------------------------------------------------------------------------------
    152 import java.io.File;
    153 import java.util.ArrayList;
    154 import java.util.List;
    155 import java.util.Properties;
    156 
    157 
    158 /**
    159 * 字符串工具箱
    160 *
    161 * @author leizhimin 2008-12-15 22:40:12
    162 */
    163 public final class StringToolkit {
    164   /**
    165   * 将一个字符串的首字母改为大写或者小写
    166   *
    167   * @param srcString 源字符串
    168   * @param flag     大小写标识,ture小写,false大些
    169   * @return 改写后的新字符串
    170   */
    171   public static String toLowerCaseInitial(String srcString, boolean flag) {
    172     StringBuilder sb = new StringBuilder();
    173     if (flag) {
    174         sb.append(Character.toLowerCase(srcString.charAt(0)));
    175     } else {
    176         sb.append(Character.toUpperCase(srcString.charAt(0)));
    177     }
    178     sb.append(srcString.substring(1));
    179     return sb.toString();
    180   }
    181 
    182   /**
    183   * 将一个字符串按照句点(.)分隔,返回最后一段
    184   *
    185   * @param clazzName 源字符串
    186   * @return 句点(.)分隔后的最后一段字符串
    187   */
    188   public static String getLastName(String clazzName) {
    189     String[] ls = clazzName.split("\.");
    190     return ls[ls.length - 1];
    191   }
    192 
    193   /**
    194   * 格式化文件路径,将其中不规范的分隔转换为标准的分隔符,并且去掉末尾的"/"符号。
    195   *
    196   * @param path 文件路径
    197   * @return 格式化后的文件路径
    198   */
    199   public static String formatPath(String path) {
    200     String reg0 = "\\+";
    201     String reg = "\\+|/+";
    202     String temp = path.trim().replaceAll(reg0, "/");
    203     temp = temp.replaceAll(reg, "/");
    204     if (temp.endsWith("/")) {
    205         temp = temp.substring(0, temp.length() - 1);
    206     }
    207     if (System.getProperty("file.separator").equals("\")) {
    208       temp= temp.replace('/','\');
    209     }
    210     return temp;
    211   }
    212 
    213   /**
    214   * 格式化文件路径,将其中不规范的分隔转换为标准的分隔符,并且去掉末尾的"/"符号(适用于FTP远程文件路径或者Web资源的相对路径)。
    215   *
    216   * @param path 文件路径
    217   * @return 格式化后的文件路径
    218   */
    219   public static String formatPath4Ftp(String path) {
    220     String reg0 = "\\+";
    221     String reg = "\\+|/+";
    222     String temp = path.trim().replaceAll(reg0, "/");
    223     temp = temp.replaceAll(reg, "/");
    224     if (temp.endsWith("/")) {
    225         temp = temp.substring(0, temp.length() - 1);
    226     }
    227     return temp;
    228   }
    229 
    230   public static void main(String[] args) {
    231     System.out.println(System.getProperty("file.separator"));
    232     Properties p = System.getProperties();
    233     System.out.println(formatPath("C:///\xxxx\\\\\///\\R5555555.txt"));
    234 
    235 //     List<String> result = series2List("asdf | sdf|siii|sapp|aaat| ", "\|");
    236 //     System.out.println(result.size());
    237 //     for (String s : result) {
    238 //         System.out.println(s);
    239 //     }
    240   }
    241 
    242   /**
    243   * 获取文件父路径
    244   *
    245   * @param path 文件路径
    246   * @return 文件父路径
    247   */
    248   public static String getParentPath(String path) {
    249     return new File(path).getParent();
    250   }
    251 
    252   /**
    253   * 获取相对路径
    254   *
    255   * @param fullPath 全路径
    256   * @param rootPath 根路径
    257   * @return 相对根路径的相对路径
    258   */
    259   public static String getRelativeRootPath(String fullPath, String rootPath) {
    260     String relativeRootPath = null;
    261     String _fullPath = formatPath(fullPath);
    262     String _rootPath = formatPath(rootPath);
    263 
    264     if (_fullPath.startsWith(_rootPath)) {
    265         relativeRootPath = fullPath.substring(_rootPath.length());
    266     } else {
    267         throw new RuntimeException("要处理的两个字符串没有包含关系,处理失败!");
    268     }
    269     if (relativeRootPath == null) return null;
    270     else
    271         return formatPath(relativeRootPath);
    272   }
    273 
    274   /**
    275   * 获取当前系统换行符
    276   *
    277   * @return 系统换行符
    278   */
    279   public static String getSystemLineSeparator() {
    280     return System.getProperty("line.separator");
    281   }
    282 
    283   /**
    284   * 将用“|”分隔的字符串转换为字符串集合列表,剔除分隔后各个字符串前后的空格
    285   *
    286   * @param series 将用“|”分隔的字符串
    287   * @return 字符串集合列表
    288   */
    289   public static List<String> series2List(String series) {
    290     return series2List(series, "\|");
    291   }
    292 
    293   /**
    294   * 将用正则表达式regex分隔的字符串转换为字符串集合列表,剔除分隔后各个字符串前后的空格
    295   *
    296   * @param series 用正则表达式分隔的字符串
    297   * @param regex 分隔串联串的正则表达式
    298   * @return 字符串集合列表
    299   */
    300   private static List<String> series2List(String series, String regex) {
    301     List<String> result = new ArrayList<String>();
    302     if (series != null && regex != null) {
    303         for (String s : series.split(regex)) {
    304           if (s.trim() != null && !s.trim().equals("")) result.add(s.trim());
    305         }
    306     }
    307     return result;
    308   }
    309 
    310   /**
    311   * @param strList 字符串集合列表
    312   * @return 通过“|”串联为一个字符串
    313   */
    314   public static String list2series(List<String> strList) {
    315     StringBuffer series = new StringBuffer();
    316     for (String s : strList) {
    317         series.append(s).append("|");
    318     }
    319     return series.toString();
    320   }
    321 
    322   /**
    323   * 将字符串的首字母转为小写
    324   *
    325   * @param resStr 源字符串
    326   * @return 首字母转为小写后的字符串
    327   */
    328   public static String firstToLowerCase(String resStr) {
    329     if (resStr == null) {
    330         return null;
    331     } else if ("".equals(resStr.trim())) {
    332         return "";
    333     } else {
    334         StringBuffer sb = new StringBuffer();
    335         Character c = resStr.charAt(0);
    336         if (Character.isLetter(c)) {
    337           if (Character.isUpperCase(c))
    338             c = Character.toLowerCase(c);
    339           sb.append(resStr);
    340           sb.setCharAt(0, c);
    341           return sb.toString();
    342         }
    343     }
    344     return resStr;
    345   }
    346 
    347   /**
    348   * 将字符串的首字母转为大写
    349   *
    350   * @param resStr 源字符串
    351   * @return 首字母转为大写后的字符串
    352   */
    353   public static String firstToUpperCase(String resStr) {
    354     if (resStr == null) {
    355         return null;
    356     } else if ("".equals(resStr.trim())) {
    357         return "";
    358     } else {
    359         StringBuffer sb = new StringBuffer();
    360         Character c = resStr.charAt(0);
    361         if (Character.isLetter(c)) {
    362           if (Character.isLowerCase(c))
    363             c = Character.toUpperCase(c);
    364           sb.append(resStr);
    365           sb.setCharAt(0, c);
    366           return sb.toString();
    367         }
    368     }
    369     return resStr;
    370   }
    371 
    372 }
  • 相关阅读:
    PTA —— 基础编程题目集 —— 函数题 —— 61 简单输出整数 (10 分)
    PTA —— 基础编程题目集 —— 函数题 —— 61 简单输出整数 (10 分)
    练习2.13 不用库函数,写一个高效计算ln N的C函数
    练习2.13 不用库函数,写一个高效计算ln N的C函数
    练习2.13 不用库函数,写一个高效计算ln N的C函数
    迷宫问题 POJ 3984
    UVA 820 Internet Bandwidth (因特网带宽)(最大流)
    UVA 1001 Say Cheese(奶酪里的老鼠)(flod)
    UVA 11105 Semiprime Hnumbers(H半素数)
    UVA 557 Burger(汉堡)(dp+概率)
  • 原文地址:https://www.cnblogs.com/androidsj/p/4762294.html
Copyright © 2011-2022 走看看