java中常用工具類之字符串操作類和MD5加密解密類
更新時間:2014年07月05日 12:59:34 投稿:junjie
這篇文章主要介紹了java中常用工具類之字符串操作類和MD5加密解密類,需要的朋友可以參考下
java中常用的工具類之String和MD5加密解密類
我們java程序員在開發(fā)項目的是常常會用到一些工具類。今天我分享一下我的兩個工具類,大家可以在項目中使用。
一、String工具類
package com.itjh.javaUtil; import java.io.ByteArrayInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; /** * 文件相關(guān)操作輔助類。 * * @author 宋立君 * @date 2014年06月24日 */ public class FileUtil { private static final String FOLDER_SEPARATOR = "/"; private static final char EXTENSION_SEPARATOR = '.'; /** * 功能:復制文件或者文件夾。 * * @author 宋立君 * @date 2014年06月24日 * @param inputFile * 源文件 * @param outputFile * 目的文件 * @param isOverWrite * 是否覆蓋(只針對文件) * @throws IOException */ public static void copy(File inputFile, File outputFile, boolean isOverWrite) throws IOException { if (!inputFile.exists()) { throw new RuntimeException(inputFile.getPath() + "源目錄不存在!"); } copyPri(inputFile, outputFile, isOverWrite); } /** * 功能:為copy 做遞歸使用。 * * @author 宋立君 * @date 2014年06月24日 * @param inputFile * @param outputFile * @param isOverWrite * @throws IOException */ private static void copyPri(File inputFile, File outputFile, boolean isOverWrite) throws IOException { // 是個文件。 if (inputFile.isFile()) { copySimpleFile(inputFile, outputFile, isOverWrite); } else { // 文件夾 if (!outputFile.exists()) { outputFile.mkdir(); } // 循環(huán)子文件夾 for (File child : inputFile.listFiles()) { copy(child, new File(outputFile.getPath() + "/" + child.getName()), isOverWrite); } } } /** * 功能:copy單個文件 * * @author 宋立君 * @date 2014年06月24日 * @param inputFile * 源文件 * @param outputFile * 目標文件 * @param isOverWrite * 是否允許覆蓋 * @throws IOException */ private static void copySimpleFile(File inputFile, File outputFile, boolean isOverWrite) throws IOException { // 目標文件已經(jīng)存在 if (outputFile.exists()) { if (isOverWrite) { if (!outputFile.delete()) { throw new RuntimeException(outputFile.getPath() + "無法覆蓋!"); } } else { // 不允許覆蓋 return; } } InputStream in = new FileInputStream(inputFile); OutputStream out = new FileOutputStream(outputFile); byte[] buffer = new byte[1024]; int read = 0; while ((read = in.read(buffer)) != -1) { out.write(buffer, 0, read); } in.close(); out.close(); } /** * 功能:刪除文件 * * @author 宋立君 * @date 2014年06月24日 * @param file * 文件 */ public static void delete(File file) { deleteFile(file); } /** * 功能:刪除文件,內(nèi)部遞歸使用 * * @author 宋立君 * @date 2014年06月24日 * @param file * 文件 * @return boolean true 刪除成功,false 刪除失敗。 */ private static void deleteFile(File file) { if (file == null || !file.exists()) { return; } // 單文件 if (!file.isDirectory()) { boolean delFlag = file.delete(); if (!delFlag) { throw new RuntimeException(file.getPath() + "刪除失??!"); } else { return; } } // 刪除子目錄 for (File child : file.listFiles()) { deleteFile(child); } // 刪除自己 file.delete(); } /** * 從文件路徑中抽取文件的擴展名, 例如. "mypath/myfile.txt" -> "txt". * @author 宋立君 * * @date 2014年06月24日 * @param 文件路徑 * @return 如果path為null,直接返回null。 */ public static String getFilenameExtension(String path) { if (path == null) { return null; } int extIndex = path.lastIndexOf(EXTENSION_SEPARATOR); if (extIndex == -1) { return null; } int folderIndex = path.lastIndexOf(FOLDER_SEPARATOR); if (folderIndex > extIndex) { return null; } return path.substring(extIndex + 1); } /** * 從文件路徑中抽取文件名, 例如: "mypath/myfile.txt" -> "myfile.txt"。 * @author 宋立君 * * @date 2014年06月24日 * @param path * 文件路徑。 * @return 抽取出來的文件名, 如果path為null,直接返回null。 */ public static String getFilename(String path) { if (path == null) { return null; } int separatorIndex = path.lastIndexOf(FOLDER_SEPARATOR); return (separatorIndex != -1 ? path.substring(separatorIndex + 1) : path); } /** * 功能:保存文件。 * * @author 宋立君 * @date 2014年06月24日 * @param content * 字節(jié) * @param file * 保存到的文件 * @throws IOException */ public static void save(byte[] content, File file) throws IOException { if (file == null) { throw new RuntimeException("保存文件不能為空"); } if (content == null) { throw new RuntimeException("文件流不能為空"); } InputStream is = new ByteArrayInputStream(content); save(is, file); } /** * 功能:保存文件 * * @author 宋立君 * @date 2014年06月24日 * @param streamIn * 文件流 * @param file * 保存到的文件 * @throws IOException */ public static void save(InputStream streamIn, File file) throws IOException { if (file == null) { throw new RuntimeException("保存文件不能為空"); } if (streamIn == null) { throw new RuntimeException("文件流不能為空"); } // 輸出流 OutputStream streamOut = null; // 文件夾不存在就創(chuàng)建。 if (!file.getParentFile().exists()) { file.getParentFile().mkdirs(); } streamOut = new FileOutputStream(file); int bytesRead = 0; byte[] buffer = new byte[8192]; while ((bytesRead = streamIn.read(buffer, 0, 8192)) != -1) { streamOut.write(buffer, 0, bytesRead); } streamOut.close(); streamIn.close(); } }
二、MD5工具類
package com.itjh.javaUtil; import java.io.ByteArrayInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; /** * 文件相關(guān)操作輔助類。 * * @author 宋立君 * @date 2014年06月24日 */ public class FileUtil { private static final String FOLDER_SEPARATOR = "/"; private static final char EXTENSION_SEPARATOR = '.'; /** * 功能:復制文件或者文件夾。 * * @author 宋立君 * @date 2014年06月24日 * @param inputFile * 源文件 * @param outputFile * 目的文件 * @param isOverWrite * 是否覆蓋(只針對文件) * @throws IOException */ public static void copy(File inputFile, File outputFile, boolean isOverWrite) throws IOException { if (!inputFile.exists()) { throw new RuntimeException(inputFile.getPath() + "源目錄不存在!"); } copyPri(inputFile, outputFile, isOverWrite); } /** * 功能:為copy 做遞歸使用。 * * @author 宋立君 * @date 2014年06月24日 * @param inputFile * @param outputFile * @param isOverWrite * @throws IOException */ private static void copyPri(File inputFile, File outputFile, boolean isOverWrite) throws IOException { // 是個文件。 if (inputFile.isFile()) { copySimpleFile(inputFile, outputFile, isOverWrite); } else { // 文件夾 if (!outputFile.exists()) { outputFile.mkdir(); } // 循環(huán)子文件夾 for (File child : inputFile.listFiles()) { copy(child, new File(outputFile.getPath() + "/" + child.getName()), isOverWrite); } } } /** * 功能:copy單個文件 * * @author 宋立君 * @date 2014年06月24日 * @param inputFile * 源文件 * @param outputFile * 目標文件 * @param isOverWrite * 是否允許覆蓋 * @throws IOException */ private static void copySimpleFile(File inputFile, File outputFile, boolean isOverWrite) throws IOException { // 目標文件已經(jīng)存在 if (outputFile.exists()) { if (isOverWrite) { if (!outputFile.delete()) { throw new RuntimeException(outputFile.getPath() + "無法覆蓋!"); } } else { // 不允許覆蓋 return; } } InputStream in = new FileInputStream(inputFile); OutputStream out = new FileOutputStream(outputFile); byte[] buffer = new byte[1024]; int read = 0; while ((read = in.read(buffer)) != -1) { out.write(buffer, 0, read); } in.close(); out.close(); } /** * 功能:刪除文件 * * @author 宋立君 * @date 2014年06月24日 * @param file * 文件 */ public static void delete(File file) { deleteFile(file); } /** * 功能:刪除文件,內(nèi)部遞歸使用 * * @author 宋立君 * @date 2014年06月24日 * @param file * 文件 * @return boolean true 刪除成功,false 刪除失敗。 */ private static void deleteFile(File file) { if (file == null || !file.exists()) { return; } // 單文件 if (!file.isDirectory()) { boolean delFlag = file.delete(); if (!delFlag) { throw new RuntimeException(file.getPath() + "刪除失??!"); } else { return; } } // 刪除子目錄 for (File child : file.listFiles()) { deleteFile(child); } // 刪除自己 file.delete(); } /** * 從文件路徑中抽取文件的擴展名, 例如. "mypath/myfile.txt" -> "txt". * @author 宋立君 * * @date 2014年06月24日 * @param 文件路徑 * @return 如果path為null,直接返回null。 */ public static String getFilenameExtension(String path) { if (path == null) { return null; } int extIndex = path.lastIndexOf(EXTENSION_SEPARATOR); if (extIndex == -1) { return null; } int folderIndex = path.lastIndexOf(FOLDER_SEPARATOR); if (folderIndex > extIndex) { return null; } return path.substring(extIndex + 1); } /** * 從文件路徑中抽取文件名, 例如: "mypath/myfile.txt" -> "myfile.txt"。 * @author 宋立君 * * @date 2014年06月24日 * @param path * 文件路徑。 * @return 抽取出來的文件名, 如果path為null,直接返回null。 */ public static String getFilename(String path) { if (path == null) { return null; } int separatorIndex = path.lastIndexOf(FOLDER_SEPARATOR); return (separatorIndex != -1 ? path.substring(separatorIndex + 1) : path); } /** * 功能:保存文件。 * * @author 宋立君 * @date 2014年06月24日 * @param content * 字節(jié) * @param file * 保存到的文件 * @throws IOException */ public static void save(byte[] content, File file) throws IOException { if (file == null) { throw new RuntimeException("保存文件不能為空"); } if (content == null) { throw new RuntimeException("文件流不能為空"); } InputStream is = new ByteArrayInputStream(content); save(is, file); } /** * 功能:保存文件 * * @author 宋立君 * @date 2014年06月24日 * @param streamIn * 文件流 * @param file * 保存到的文件 * @throws IOException */ public static void save(InputStream streamIn, File file) throws IOException { if (file == null) { throw new RuntimeException("保存文件不能為空"); } if (streamIn == null) { throw new RuntimeException("文件流不能為空"); } // 輸出流 OutputStream streamOut = null; // 文件夾不存在就創(chuàng)建。 if (!file.getParentFile().exists()) { file.getParentFile().mkdirs(); } streamOut = new FileOutputStream(file); int bytesRead = 0; byte[] buffer = new byte[8192]; while ((bytesRead = streamIn.read(buffer, 0, 8192)) != -1) { streamOut.write(buffer, 0, bytesRead); } streamOut.close(); streamIn.close(); } }
相關(guān)文章
淺談SpringCloud實現(xiàn)簡單的微服務(wù)架構(gòu)
Spring Cloud是一系列框架的有序集合,本文就使用SpringCloud實現(xiàn)一套簡單的微服務(wù)架構(gòu),具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-01-01jpa實體@ManyToOne @OneToMany無限遞歸方式
這篇文章主要介紹了jpa實體@ManyToOne @OneToMany無限遞歸方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-10-10帶你了解Java數(shù)據(jù)結(jié)構(gòu)和算法之無權(quán)無向圖
這篇文章主要為大家介紹了Java數(shù)據(jù)結(jié)構(gòu)和算法之無權(quán)無向圖?,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-01-01springboot+redis 實現(xiàn)分布式限流令牌桶的示例代碼
這篇文章主要介紹了springboot+redis 實現(xiàn)分布式限流令牌桶 ,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-04-04Java基礎(chǔ)之Bean的創(chuàng)建、定位和使用
這篇文章主要介紹了Java基礎(chǔ)之Bean的創(chuàng)建、定位和使用,文中有非常詳細的圖文示例及代碼,對正在學習java基礎(chǔ)的小伙伴們有很好地幫助,需要的朋友可以參考下2021-05-05