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();
}
}