java中常用工具类之字符串操作类和MD5加密解密类
java中常用的工具类之String和MD5加密解密类
我们java程序员在开发项目的是常常会用到一些工具类。今天我分享一下我的两个工具类,大家可以在项目中使用。
一、String工具类
packagecom.itjh.javaUtil; importjava.io.ByteArrayInputStream; importjava.io.File; importjava.io.FileInputStream; importjava.io.FileOutputStream; importjava.io.IOException; importjava.io.InputStream; importjava.io.OutputStream; /** *文件相关操作辅助类。 * *@author宋立君 *@date2014年06月24日 */ publicclassFileUtil{ privatestaticfinalStringFOLDER_SEPARATOR="/"; privatestaticfinalcharEXTENSION_SEPARATOR='.'; /** *功能:复制文件或者文件夹。 * *@author宋立君 *@date2014年06月24日 *@paraminputFile *源文件 *@paramoutputFile *目的文件 *@paramisOverWrite *是否覆盖(只针对文件) *@throwsIOException */ publicstaticvoidcopy(FileinputFile,FileoutputFile,booleanisOverWrite) throwsIOException{ if(!inputFile.exists()){ thrownewRuntimeException(inputFile.getPath()+"源目录不存在!"); } copyPri(inputFile,outputFile,isOverWrite); } /** *功能:为copy做递归使用。 * *@author宋立君 *@date2014年06月24日 *@paraminputFile *@paramoutputFile *@paramisOverWrite *@throwsIOException */ privatestaticvoidcopyPri(FileinputFile,FileoutputFile, booleanisOverWrite)throwsIOException{ //是个文件。 if(inputFile.isFile()){ copySimpleFile(inputFile,outputFile,isOverWrite); }else{ //文件夹 if(!outputFile.exists()){ outputFile.mkdir(); } //循环子文件夹 for(Filechild:inputFile.listFiles()){ copy(child, newFile(outputFile.getPath()+"/"+child.getName()), isOverWrite); } } } /** *功能:copy单个文件 * *@author宋立君 *@date2014年06月24日 *@paraminputFile *源文件 *@paramoutputFile *目标文件 *@paramisOverWrite *是否允许覆盖 *@throwsIOException */ privatestaticvoidcopySimpleFile(FileinputFile,FileoutputFile, booleanisOverWrite)throwsIOException{ //目标文件已经存在 if(outputFile.exists()){ if(isOverWrite){ if(!outputFile.delete()){ thrownewRuntimeException(outputFile.getPath()+"无法覆盖!"); } }else{ //不允许覆盖 return; } } InputStreamin=newFileInputStream(inputFile); OutputStreamout=newFileOutputStream(outputFile); byte[]buffer=newbyte[1024]; intread=0; while((read=in.read(buffer))!=-1){ out.write(buffer,0,read); } in.close(); out.close(); } /** *功能:删除文件 * *@author宋立君 *@date2014年06月24日 *@paramfile *文件 */ publicstaticvoiddelete(Filefile){ deleteFile(file); } /** *功能:删除文件,内部递归使用 * *@author宋立君 *@date2014年06月24日 *@paramfile *文件 *@returnbooleantrue删除成功,false删除失败。 */ privatestaticvoiddeleteFile(Filefile){ if(file==null||!file.exists()){ return; } //单文件 if(!file.isDirectory()){ booleandelFlag=file.delete(); if(!delFlag){ thrownewRuntimeException(file.getPath()+"删除失败!"); }else{ return; } } //删除子目录 for(Filechild:file.listFiles()){ deleteFile(child); } //删除自己 file.delete(); } /** *从文件路径中抽取文件的扩展名,例如."mypath/myfile.txt"->"txt".*@author宋立君 * *@date2014年06月24日 *@param文件路径 *@return如果path为null,直接返回null。 */ publicstaticStringgetFilenameExtension(Stringpath){ if(path==null){ returnnull; } intextIndex=path.lastIndexOf(EXTENSION_SEPARATOR); if(extIndex==-1){ returnnull; } intfolderIndex=path.lastIndexOf(FOLDER_SEPARATOR); if(folderIndex>extIndex){ returnnull; } returnpath.substring(extIndex+1); } /** *从文件路径中抽取文件名,例如:"mypath/myfile.txt"->"myfile.txt"。*@author宋立君 * *@date2014年06月24日 *@parampath *文件路径。 *@return抽取出来的文件名,如果path为null,直接返回null。 */ publicstaticStringgetFilename(Stringpath){ if(path==null){ returnnull; } intseparatorIndex=path.lastIndexOf(FOLDER_SEPARATOR); return(separatorIndex!=-1?path.substring(separatorIndex+1) :path); } /** *功能:保存文件。 * *@author宋立君 *@date2014年06月24日 *@paramcontent *字节 *@paramfile *保存到的文件 *@throwsIOException */ publicstaticvoidsave(byte[]content,Filefile)throwsIOException{ if(file==null){ thrownewRuntimeException("保存文件不能为空"); } if(content==null){ thrownewRuntimeException("文件流不能为空"); } InputStreamis=newByteArrayInputStream(content); save(is,file); } /** *功能:保存文件 * *@author宋立君 *@date2014年06月24日 *@paramstreamIn *文件流 *@paramfile *保存到的文件 *@throwsIOException */ publicstaticvoidsave(InputStreamstreamIn,Filefile)throwsIOException{ if(file==null){ thrownewRuntimeException("保存文件不能为空"); } if(streamIn==null){ thrownewRuntimeException("文件流不能为空"); } //输出流 OutputStreamstreamOut=null; //文件夹不存在就创建。 if(!file.getParentFile().exists()){ file.getParentFile().mkdirs(); } streamOut=newFileOutputStream(file); intbytesRead=0; byte[]buffer=newbyte[8192]; while((bytesRead=streamIn.read(buffer,0,8192))!=-1){ streamOut.write(buffer,0,bytesRead); } streamOut.close(); streamIn.close(); } }
二、MD5工具类
packagecom.itjh.javaUtil; importjava.io.ByteArrayInputStream; importjava.io.File; importjava.io.FileInputStream; importjava.io.FileOutputStream; importjava.io.IOException; importjava.io.InputStream; importjava.io.OutputStream; /** *文件相关操作辅助类。 * *@author宋立君 *@date2014年06月24日 */ publicclassFileUtil{ privatestaticfinalStringFOLDER_SEPARATOR="/"; privatestaticfinalcharEXTENSION_SEPARATOR='.'; /** *功能:复制文件或者文件夹。 * *@author宋立君 *@date2014年06月24日 *@paraminputFile *源文件 *@paramoutputFile *目的文件 *@paramisOverWrite *是否覆盖(只针对文件) *@throwsIOException */ publicstaticvoidcopy(FileinputFile,FileoutputFile,booleanisOverWrite) throwsIOException{ if(!inputFile.exists()){ thrownewRuntimeException(inputFile.getPath()+"源目录不存在!"); } copyPri(inputFile,outputFile,isOverWrite); } /** *功能:为copy做递归使用。 * *@author宋立君 *@date2014年06月24日 *@paraminputFile *@paramoutputFile *@paramisOverWrite *@throwsIOException */ privatestaticvoidcopyPri(FileinputFile,FileoutputFile, booleanisOverWrite)throwsIOException{ //是个文件。 if(inputFile.isFile()){ copySimpleFile(inputFile,outputFile,isOverWrite); }else{ //文件夹 if(!outputFile.exists()){ outputFile.mkdir(); } //循环子文件夹 for(Filechild:inputFile.listFiles()){ copy(child, newFile(outputFile.getPath()+"/"+child.getName()), isOverWrite); } } } /** *功能:copy单个文件 * *@author宋立君 *@date2014年06月24日 *@paraminputFile *源文件 *@paramoutputFile *目标文件 *@paramisOverWrite *是否允许覆盖 *@throwsIOException */ privatestaticvoidcopySimpleFile(FileinputFile,FileoutputFile, booleanisOverWrite)throwsIOException{ //目标文件已经存在 if(outputFile.exists()){ if(isOverWrite){ if(!outputFile.delete()){ thrownewRuntimeException(outputFile.getPath()+"无法覆盖!"); } }else{ //不允许覆盖 return; } } InputStreamin=newFileInputStream(inputFile); OutputStreamout=newFileOutputStream(outputFile); byte[]buffer=newbyte[1024]; intread=0; while((read=in.read(buffer))!=-1){ out.write(buffer,0,read); } in.close(); out.close(); } /** *功能:删除文件 * *@author宋立君 *@date2014年06月24日 *@paramfile *文件 */ publicstaticvoiddelete(Filefile){ deleteFile(file); } /** *功能:删除文件,内部递归使用 * *@author宋立君 *@date2014年06月24日 *@paramfile *文件 *@returnbooleantrue删除成功,false删除失败。 */ privatestaticvoiddeleteFile(Filefile){ if(file==null||!file.exists()){ return; } //单文件 if(!file.isDirectory()){ booleandelFlag=file.delete(); if(!delFlag){ thrownewRuntimeException(file.getPath()+"删除失败!"); }else{ return; } } //删除子目录 for(Filechild:file.listFiles()){ deleteFile(child); } //删除自己 file.delete(); } /** *从文件路径中抽取文件的扩展名,例如."mypath/myfile.txt"->"txt".*@author宋立君 * *@date2014年06月24日 *@param文件路径 *@return如果path为null,直接返回null。 */ publicstaticStringgetFilenameExtension(Stringpath){ if(path==null){ returnnull; } intextIndex=path.lastIndexOf(EXTENSION_SEPARATOR); if(extIndex==-1){ returnnull; } intfolderIndex=path.lastIndexOf(FOLDER_SEPARATOR); if(folderIndex>extIndex){ returnnull; } returnpath.substring(extIndex+1); } /** *从文件路径中抽取文件名,例如:"mypath/myfile.txt"->"myfile.txt"。*@author宋立君 * *@date2014年06月24日 *@parampath *文件路径。 *@return抽取出来的文件名,如果path为null,直接返回null。 */ publicstaticStringgetFilename(Stringpath){ if(path==null){ returnnull; } intseparatorIndex=path.lastIndexOf(FOLDER_SEPARATOR); return(separatorIndex!=-1?path.substring(separatorIndex+1) :path); } /** *功能:保存文件。 * *@author宋立君 *@date2014年06月24日 *@paramcontent *字节 *@paramfile *保存到的文件 *@throwsIOException */ publicstaticvoidsave(byte[]content,Filefile)throwsIOException{ if(file==null){ thrownewRuntimeException("保存文件不能为空"); } if(content==null){ thrownewRuntimeException("文件流不能为空"); } InputStreamis=newByteArrayInputStream(content); save(is,file); } /** *功能:保存文件 * *@author宋立君 *@date2014年06月24日 *@paramstreamIn *文件流 *@paramfile *保存到的文件 *@throwsIOException */ publicstaticvoidsave(InputStreamstreamIn,Filefile)throwsIOException{ if(file==null){ thrownewRuntimeException("保存文件不能为空"); } if(streamIn==null){ thrownewRuntimeException("文件流不能为空"); } //输出流 OutputStreamstreamOut=null; //文件夹不存在就创建。 if(!file.getParentFile().exists()){ file.getParentFile().mkdirs(); } streamOut=newFileOutputStream(file); intbytesRead=0; byte[]buffer=newbyte[8192]; while((bytesRead=streamIn.read(buffer,0,8192))!=-1){ streamOut.write(buffer,0,bytesRead); } streamOut.close(); streamIn.close(); } }