java中常用工具类之字符串操作类和MD5加密解密类

时间:2022-06-30 04:41:47

java中常用的工具类之String和MD5加密解密类

我们java程序员在开发项目的是常常会用到一些工具类。今天我分享一下我的两个工具类,大家可以在项目中使用。

一、String工具类

  1. package com.itjh.javaUtil; 
  2.   
  3. import java.io.ByteArrayInputStream; 
  4. import java.io.File; 
  5. import java.io.FileInputStream; 
  6. import java.io.FileOutputStream; 
  7. import java.io.IOException; 
  8. import java.io.InputStream; 
  9. import java.io.OutputStream; 
  10.   
  11. /** 
  12.  * 文件相关操作辅助类。 
  13.  *  
  14.  * @author 宋立君 
  15.  * @date 2014年06月24日 
  16.  */ 
  17. public class FileUtil { 
  18.     private static final String FOLDER_SEPARATOR = "/"
  19.     private static final char EXTENSION_SEPARATOR = '.'
  20.   
  21.     /** 
  22.      * 功能:复制文件或者文件夹。 
  23.      *  
  24.      * @author 宋立君 
  25.      * @date 2014年06月24日 
  26.      * @param inputFile 
  27.      *      源文件 
  28.      * @param outputFile 
  29.      *      目的文件 
  30.      * @param isOverWrite 
  31.      *      是否覆盖(只针对文件) 
  32.      * @throws IOException 
  33.      */ 
  34.     public static void copy(File inputFile, File outputFile, boolean isOverWrite) 
  35.             throws IOException { 
  36.         if (!inputFile.exists()) { 
  37.             throw new RuntimeException(inputFile.getPath() + "源目录不存在!"); 
  38.         } 
  39.         copyPri(inputFile, outputFile, isOverWrite); 
  40.     } 
  41.   
  42.     /** 
  43.      * 功能:为copy 做递归使用。 
  44.      *  
  45.      * @author 宋立君 
  46.      * @date 2014年06月24日 
  47.      * @param inputFile 
  48.      * @param outputFile 
  49.      * @param isOverWrite 
  50.      * @throws IOException 
  51.      */ 
  52.     private static void copyPri(File inputFile, File outputFile, 
  53.             boolean isOverWrite) throws IOException { 
  54.         // 是个文件。 
  55.         if (inputFile.isFile()) { 
  56.             copySimpleFile(inputFile, outputFile, isOverWrite); 
  57.         } else { 
  58.             // 文件夹 
  59.             if (!outputFile.exists()) { 
  60.                 outputFile.mkdir(); 
  61.             } 
  62.             // 循环子文件夹 
  63.             for (File child : inputFile.listFiles()) { 
  64.                 copy(child, 
  65.                         new File(outputFile.getPath() + "/" + child.getName()), 
  66.                         isOverWrite); 
  67.             } 
  68.         } 
  69.     } 
  70.   
  71.     /** 
  72.      * 功能:copy单个文件 
  73.      *  
  74.      * @author 宋立君 
  75.      * @date 2014年06月24日 
  76.      * @param inputFile 
  77.      *      源文件 
  78.      * @param outputFile 
  79.      *      目标文件 
  80.      * @param isOverWrite 
  81.      *      是否允许覆盖 
  82.      * @throws IOException 
  83.      */ 
  84.     private static void copySimpleFile(File inputFile, File outputFile, 
  85.             boolean isOverWrite) throws IOException { 
  86.         // 目标文件已经存在 
  87.         if (outputFile.exists()) { 
  88.             if (isOverWrite) { 
  89.                 if (!outputFile.delete()) { 
  90.                     throw new RuntimeException(outputFile.getPath() + "无法覆盖!"); 
  91.                 } 
  92.             } else { 
  93.                 // 不允许覆盖 
  94.                 return
  95.             } 
  96.         } 
  97.         InputStream in = new FileInputStream(inputFile); 
  98.         OutputStream out = new FileOutputStream(outputFile); 
  99.         byte[] buffer = new byte[1024]; 
  100.         int read = 0; 
  101.         while ((read = in.read(buffer)) != -1) { 
  102.             out.write(buffer, 0, read); 
  103.         } 
  104.         in.close(); 
  105.         out.close(); 
  106.     } 
  107.   
  108.     /** 
  109.      * 功能:删除文件 
  110.      *  
  111.      * @author 宋立君 
  112.      * @date 2014年06月24日 
  113.      * @param file 
  114.      *      文件 
  115.      */ 
  116.     public static void delete(File file) { 
  117.         deleteFile(file); 
  118.     } 
  119.   
  120.     /** 
  121.      * 功能:删除文件,内部递归使用 
  122.      *  
  123.      * @author 宋立君 
  124.      * @date 2014年06月24日 
  125.      * @param file 
  126.      *      文件 
  127.      * @return boolean true 删除成功,false 删除失败。 
  128.      */ 
  129.     private static void deleteFile(File file) { 
  130.         if (file == null || !file.exists()) { 
  131.             return
  132.         } 
  133.         // 单文件 
  134.         if (!file.isDirectory()) { 
  135.             boolean delFlag = file.delete(); 
  136.             if (!delFlag) { 
  137.                 throw new RuntimeException(file.getPath() + "删除失败!"); 
  138.             } else { 
  139.                 return
  140.             } 
  141.         } 
  142.         // 删除子目录 
  143.         for (File child : file.listFiles()) { 
  144.             deleteFile(child); 
  145.         } 
  146.         // 删除自己 
  147.         file.delete(); 
  148.     } 
  149.   
  150.     /** 
  151.      * 从文件路径中抽取文件的扩展名, 例如. "mypath/myfile.txt" -> "txt". * @author 宋立君 
  152.      *  
  153.      * @date 2014年06月24日 
  154.      * @param 文件路径 
  155.      * @return 如果path为null,直接返回null。 
  156.      */ 
  157.     public static String getFilenameExtension(String path) { 
  158.         if (path == null) { 
  159.             return null
  160.         } 
  161.         int extIndex = path.lastIndexOf(EXTENSION_SEPARATOR); 
  162.         if (extIndex == -1) { 
  163.             return null
  164.         } 
  165.         int folderIndex = path.lastIndexOf(FOLDER_SEPARATOR); 
  166.         if (folderIndex > extIndex) { 
  167.             return null
  168.         } 
  169.         return path.substring(extIndex + 1); 
  170.     } 
  171.   
  172.     /** 
  173.      * 从文件路径中抽取文件名, 例如: "mypath/myfile.txt" -> "myfile.txt"。 * @author 宋立君 
  174.      *  
  175.      * @date 2014年06月24日 
  176.      * @param path 
  177.      *      文件路径。 
  178.      * @return 抽取出来的文件名, 如果path为null,直接返回null。 
  179.      */ 
  180.     public static String getFilename(String path) { 
  181.         if (path == null) { 
  182.             return null
  183.         } 
  184.         int separatorIndex = path.lastIndexOf(FOLDER_SEPARATOR); 
  185.         return (separatorIndex != -1 ? path.substring(separatorIndex + 1) 
  186.                 : path); 
  187.     } 
  188.   
  189.     /** 
  190.      * 功能:保存文件。 
  191.      *  
  192.      * @author 宋立君 
  193.      * @date 2014年06月24日 
  194.      * @param content 
  195.      *      字节 
  196.      * @param file 
  197.      *      保存到的文件 
  198.      * @throws IOException 
  199.      */ 
  200.     public static void save(byte[] content, File file) throws IOException { 
  201.         if (file == null) { 
  202.             throw new RuntimeException("保存文件不能为空"); 
  203.         } 
  204.         if (content == null) { 
  205.             throw new RuntimeException("文件流不能为空"); 
  206.         } 
  207.         InputStream is = new ByteArrayInputStream(content); 
  208.         save(is, file); 
  209.     } 
  210.   
  211.     /** 
  212.      * 功能:保存文件 
  213.      *  
  214.      * @author 宋立君 
  215.      * @date 2014年06月24日 
  216.      * @param streamIn 
  217.      *      文件流 
  218.      * @param file 
  219.      *      保存到的文件 
  220.      * @throws IOException 
  221.      */ 
  222.     public static void save(InputStream streamIn, File file) throws IOException { 
  223.         if (file == null) { 
  224.             throw new RuntimeException("保存文件不能为空"); 
  225.         } 
  226.         if (streamIn == null) { 
  227.             throw new RuntimeException("文件流不能为空"); 
  228.         } 
  229.         // 输出流 
  230.         OutputStream streamOut = null
  231.         // 文件夹不存在就创建。 
  232.         if (!file.getParentFile().exists()) { 
  233.             file.getParentFile().mkdirs(); 
  234.         } 
  235.         streamOut = new FileOutputStream(file); 
  236.         int bytesRead = 0; 
  237.         byte[] buffer = new byte[8192]; 
  238.         while ((bytesRead = streamIn.read(buffer, 0, 8192)) != -1) { 
  239.             streamOut.write(buffer, 0, bytesRead); 
  240.         } 
  241.         streamOut.close(); 
  242.         streamIn.close(); 
  243.     } 

二、MD5工具类

  1. package com.itjh.javaUtil; 
  2.   
  3. import java.io.ByteArrayInputStream; 
  4. import java.io.File; 
  5. import java.io.FileInputStream; 
  6. import java.io.FileOutputStream; 
  7. import java.io.IOException; 
  8. import java.io.InputStream; 
  9. import java.io.OutputStream; 
  10.   
  11. /** 
  12.  * 文件相关操作辅助类。 
  13.  *  
  14.  * @author 宋立君 
  15.  * @date 2014年06月24日 
  16.  */ 
  17. public class FileUtil { 
  18.     private static final String FOLDER_SEPARATOR = "/"
  19.     private static final char EXTENSION_SEPARATOR = '.'
  20.   
  21.     /** 
  22.      * 功能:复制文件或者文件夹。 
  23.      *  
  24.      * @author 宋立君 
  25.      * @date 2014年06月24日 
  26.      * @param inputFile 
  27.      *      源文件 
  28.      * @param outputFile 
  29.      *      目的文件 
  30.      * @param isOverWrite 
  31.      *      是否覆盖(只针对文件) 
  32.      * @throws IOException 
  33.      */ 
  34.     public static void copy(File inputFile, File outputFile, boolean isOverWrite) 
  35.             throws IOException { 
  36.         if (!inputFile.exists()) { 
  37.             throw new RuntimeException(inputFile.getPath() + "源目录不存在!"); 
  38.         } 
  39.         copyPri(inputFile, outputFile, isOverWrite); 
  40.     } 
  41.   
  42.     /** 
  43.      * 功能:为copy 做递归使用。 
  44.      *  
  45.      * @author 宋立君 
  46.      * @date 2014年06月24日 
  47.      * @param inputFile 
  48.      * @param outputFile 
  49.      * @param isOverWrite 
  50.      * @throws IOException 
  51.      */ 
  52.     private static void copyPri(File inputFile, File outputFile, 
  53.             boolean isOverWrite) throws IOException { 
  54.         // 是个文件。 
  55.         if (inputFile.isFile()) { 
  56.             copySimpleFile(inputFile, outputFile, isOverWrite); 
  57.         } else { 
  58.             // 文件夹 
  59.             if (!outputFile.exists()) { 
  60.                 outputFile.mkdir(); 
  61.             } 
  62.             // 循环子文件夹 
  63.             for (File child : inputFile.listFiles()) { 
  64.                 copy(child, 
  65.                         new File(outputFile.getPath() + "/" + child.getName()), 
  66.                         isOverWrite); 
  67.             } 
  68.         } 
  69.     } 
  70.   
  71.     /** 
  72.      * 功能:copy单个文件 
  73.      *  
  74.      * @author 宋立君 
  75.      * @date 2014年06月24日 
  76.      * @param inputFile 
  77.      *      源文件 
  78.      * @param outputFile 
  79.      *      目标文件 
  80.      * @param isOverWrite 
  81.      *      是否允许覆盖 
  82.      * @throws IOException 
  83.      */ 
  84.     private static void copySimpleFile(File inputFile, File outputFile, 
  85.             boolean isOverWrite) throws IOException { 
  86.         // 目标文件已经存在 
  87.         if (outputFile.exists()) { 
  88.             if (isOverWrite) { 
  89.                 if (!outputFile.delete()) { 
  90.                     throw new RuntimeException(outputFile.getPath() + "无法覆盖!"); 
  91.                 } 
  92.             } else { 
  93.                 // 不允许覆盖 
  94.                 return
  95.             } 
  96.         } 
  97.         InputStream in = new FileInputStream(inputFile); 
  98.         OutputStream out = new FileOutputStream(outputFile); 
  99.         byte[] buffer = new byte[1024]; 
  100.         int read = 0; 
  101.         while ((read = in.read(buffer)) != -1) { 
  102.             out.write(buffer, 0, read); 
  103.         } 
  104.         in.close(); 
  105.         out.close(); 
  106.     } 
  107.   
  108.     /** 
  109.      * 功能:删除文件 
  110.      *  
  111.      * @author 宋立君 
  112.      * @date 2014年06月24日 
  113.      * @param file 
  114.      *      文件 
  115.      */ 
  116.     public static void delete(File file) { 
  117.         deleteFile(file); 
  118.     } 
  119.   
  120.     /** 
  121.      * 功能:删除文件,内部递归使用 
  122.      *  
  123.      * @author 宋立君 
  124.      * @date 2014年06月24日 
  125.      * @param file 
  126.      *      文件 
  127.      * @return boolean true 删除成功,false 删除失败。 
  128.      */ 
  129.     private static void deleteFile(File file) { 
  130.         if (file == null || !file.exists()) { 
  131.             return
  132.         } 
  133.         // 单文件 
  134.         if (!file.isDirectory()) { 
  135.             boolean delFlag = file.delete(); 
  136.             if (!delFlag) { 
  137.                 throw new RuntimeException(file.getPath() + "删除失败!"); 
  138.             } else { 
  139.                 return
  140.             } 
  141.         } 
  142.         // 删除子目录 
  143.         for (File child : file.listFiles()) { 
  144.             deleteFile(child); 
  145.         } 
  146.         // 删除自己 
  147.         file.delete(); 
  148.     } 
  149.   
  150.     /** 
  151.      * 从文件路径中抽取文件的扩展名, 例如. "mypath/myfile.txt" -> "txt". * @author 宋立君 
  152.      *  
  153.      * @date 2014年06月24日 
  154.      * @param 文件路径 
  155.      * @return 如果path为null,直接返回null。 
  156.      */ 
  157.     public static String getFilenameExtension(String path) { 
  158.         if (path == null) { 
  159.             return null
  160.         } 
  161.         int extIndex = path.lastIndexOf(EXTENSION_SEPARATOR); 
  162.         if (extIndex == -1) { 
  163.             return null
  164.         } 
  165.         int folderIndex = path.lastIndexOf(FOLDER_SEPARATOR); 
  166.         if (folderIndex > extIndex) { 
  167.             return null
  168.         } 
  169.         return path.substring(extIndex + 1); 
  170.     } 
  171.   
  172.     /** 
  173.      * 从文件路径中抽取文件名, 例如: "mypath/myfile.txt" -> "myfile.txt"。 * @author 宋立君 
  174.      *  
  175.      * @date 2014年06月24日 
  176.      * @param path 
  177.      *      文件路径。 
  178.      * @return 抽取出来的文件名, 如果path为null,直接返回null。 
  179.      */ 
  180.     public static String getFilename(String path) { 
  181.         if (path == null) { 
  182.             return null
  183.         } 
  184.         int separatorIndex = path.lastIndexOf(FOLDER_SEPARATOR); 
  185.         return (separatorIndex != -1 ? path.substring(separatorIndex + 1) 
  186.                 : path); 
  187.     } 
  188.   
  189.     /** 
  190.      * 功能:保存文件。 
  191.      *  
  192.      * @author 宋立君 
  193.      * @date 2014年06月24日 
  194.      * @param content 
  195.      *      字节 
  196.      * @param file 
  197.      *      保存到的文件 
  198.      * @throws IOException 
  199.      */ 
  200.     public static void save(byte[] content, File file) throws IOException { 
  201.         if (file == null) { 
  202.             throw new RuntimeException("保存文件不能为空"); 
  203.         } 
  204.         if (content == null) { 
  205.             throw new RuntimeException("文件流不能为空"); 
  206.         } 
  207.         InputStream is = new ByteArrayInputStream(content); 
  208.         save(is, file); 
  209.     } 
  210.   
  211.     /** 
  212.      * 功能:保存文件 
  213.      *  
  214.      * @author 宋立君 
  215.      * @date 2014年06月24日 
  216.      * @param streamIn 
  217.      *      文件流 
  218.      * @param file 
  219.      *      保存到的文件 
  220.      * @throws IOException 
  221.      */ 
  222.     public static void save(InputStream streamIn, File file) throws IOException { 
  223.         if (file == null) { 
  224.             throw new RuntimeException("保存文件不能为空"); 
  225.         } 
  226.         if (streamIn == null) { 
  227.             throw new RuntimeException("文件流不能为空"); 
  228.         } 
  229.         // 输出流 
  230.         OutputStream streamOut = null
  231.         // 文件夹不存在就创建。 
  232.         if (!file.getParentFile().exists()) { 
  233.             file.getParentFile().mkdirs(); 
  234.         } 
  235.         streamOut = new FileOutputStream(file); 
  236.         int bytesRead = 0; 
  237.         byte[] buffer = new byte[8192]; 
  238.         while ((bytesRead = streamIn.read(buffer, 0, 8192)) != -1) { 
  239.             streamOut.write(buffer, 0, bytesRead); 
  240.         } 
  241.         streamOut.close(); 
  242.         streamIn.close(); 
  243.     } 
 
 

 

相关文章