Java文件操作工具类fileUtil实例【文件增删改,复制等】
本文实例讲述了Java文件操作工具类fileUtil。分享给大家供大家参考,具体如下:
packagecom.gcloud.common;
importjava.io.*;
importjava.net.MalformedURLException;
importjava.net.URL;
/**
*文件工具类
*Createdbycharlinon2017/9/8.
*/
publicclassFileUtil{
/**
*读取文件内容
*
*@paramis
*@return
*/
publicstaticStringreadFile(InputStreamis){
BufferedReaderbr=null;
StringBuffersb=newStringBuffer();
try{
br=newBufferedReader(newInputStreamReader(is,"UTF-8"));
StringreadLine=null;
while((readLine=br.readLine())!=null){
sb.append(readLine);
}
}catch(Exceptione){
e.printStackTrace();
}finally{
try{
br.close();
is.close();
}catch(IOExceptione){
e.printStackTrace();
}
}
returnsb.toString();
}
/**
*判断指定的文件是否存在。
*
*@paramfileName
*@return
*/
publicstaticbooleanisFileExist(StringfileName){
returnnewFile(fileName).isFile();
}
/**
*创建指定的目录。如果指定的目录的父目录不存在则创建其目录书上所有需要的父目录。
*注意:可能会在返回false的时候创建部分父目录。
*
*@paramfile
*@return
*/
publicstaticbooleanmakeDirectory(Filefile){
Fileparent=file.getParentFile();
if(parent!=null){
returnparent.mkdirs();
}
returnfalse;
}
/**
*返回文件的URL地址。
*
*@paramfile
*@return
*@throwsMalformedURLException
*/
publicstaticURLgetURL(Filefile)throwsMalformedURLException{
StringfileURL="file:/"+file.getAbsolutePath();
URLurl=newURL(fileURL);
returnurl;
}
/**
*从文件路径得到文件名。
*
*@paramfilePath
*@return
*/
publicstaticStringgetFileName(StringfilePath){
Filefile=newFile(filePath);
returnfile.getName();
}
/**
*从文件名得到文件绝对路径。
*
*@paramfileName
*@return
*/
publicstaticStringgetFilePath(StringfileName){
Filefile=newFile(fileName);
returnfile.getAbsolutePath();
}
/**
*将DOS/Windows格式的路径转换为UNIX/Linux格式的路径。
*
*@paramfilePath
*@return
*/
publicstaticStringtoUNIXpath(StringfilePath){
returnfilePath.replace("","/");
}
/**
*从文件名得到UNIX风格的文件绝对路径。
*
*@paramfileName
*@return
*/
publicstaticStringgetUNIXfilePath(StringfileName){
Filefile=newFile(fileName);
returntoUNIXpath(file.getAbsolutePath());
}
/**
*得到文件后缀名
*
*@paramfileName
*@return
*/
publicstaticStringgetFileExt(StringfileName){
intpoint=fileName.lastIndexOf('.');
intlength=fileName.length();
if(point==-1||point==length-1){
return"";
}else{
returnfileName.substring(point+1,length);
}
}
/**
*得到文件的名字部分。实际上就是路径中的最后一个路径分隔符后的部分。
*
*@paramfileName
*@return
*/
publicstaticStringgetNamePart(StringfileName){
intpoint=getPathLastIndex(fileName);
intlength=fileName.length();
if(point==-1){
returnfileName;
}elseif(point==length-1){
intsecondPoint=getPathLastIndex(fileName,point-1);
if(secondPoint==-1){
if(length==1){
returnfileName;
}else{
returnfileName.substring(0,point);
}
}else{
returnfileName.substring(secondPoint+1,point);
}
}else{
returnfileName.substring(point+1);
}
}
/**
*得到文件名中的父路径部分。对两种路径分隔符都有效。不存在时返回""。
*如果文件名是以路径分隔符结尾的则不考虑该分隔符,例如"/path/"返回""。
*
*@paramfileName
*@return
*/
publicstaticStringgetPathPart(StringfileName){
intpoint=getPathLastIndex(fileName);
intlength=fileName.length();
if(point==-1){
return"";
}elseif(point==length-1){
intsecondPoint=getPathLastIndex(fileName,point-1);
if(secondPoint==-1){
return"";
}else{
returnfileName.substring(0,secondPoint);
}
}else{
returnfileName.substring(0,point);
}
}
/**
*得到路径分隔符在文件路径中最后出现的位置。对于DOS或者UNIX风格的分隔符都可以。
*
*@paramfileName
*@return
*/
publicstaticintgetPathLastIndex(StringfileName){
intpoint=fileName.lastIndexOf("/");
if(point==-1){
point=fileName.lastIndexOf("");
}
returnpoint;
}
/**
*得到路径分隔符在文件路径中指定位置前最后出现的位置。对于DOS或者UNIX风格的分隔符都可以。
*
*@paramfileName
*@paramfromIndex
*@return
*/
publicstaticintgetPathLastIndex(StringfileName,intfromIndex){
intpoint=fileName.lastIndexOf("/",fromIndex);
if(point==-1){
point=fileName.lastIndexOf("",fromIndex);
}
returnpoint;
}
/**
*得到路径分隔符在文件路径中首次出现的位置。对于DOS或者UNIX风格的分隔符都可以。
*
*@paramfileName
*@return
*/
publicstaticintgetPathIndex(StringfileName){
intpoint=fileName.indexOf("/");
if(point==-1){
point=fileName.indexOf("");
}
returnpoint;
}
/**
*得到路径分隔符在文件路径中指定位置后首次出现的位置。对于DOS或者UNIX风格的分隔符都可以。
*
*@paramfileName
*@paramfromIndex
*@return
*/
publicstaticintgetPathIndex(StringfileName,intfromIndex){
intpoint=fileName.indexOf("/",fromIndex);
if(point==-1){
point=fileName.indexOf("",fromIndex);
}
returnpoint;
}
/**
*将文件名中的类型部分去掉。
*
*@paramfilename
*@return
*/
publicstaticStringremoveFileExt(Stringfilename){
intindex=filename.lastIndexOf(".");
if(index!=-1){
returnfilename.substring(0,index);
}else{
returnfilename;
}
}
/**
*得到相对路径。文件名不是目录名的子节点时返回文件名。
*
*@parampathName
*@paramfileName
*@return
*/
publicstaticStringgetSubpath(StringpathName,StringfileName){
intindex=fileName.indexOf(pathName);
if(index!=-1){
returnfileName.substring(index+pathName.length()+1);
}else{
returnfileName;
}
}
/**
*删除一个文件。
*
*@paramfilename
*@throwsIOException
*/
publicstaticvoiddeleteFile(Stringfilename)throwsIOException{
Filefile=newFile(filename);
if(file.isDirectory()){
thrownewIOException("IOException->BadInputException:notafile.");
}
if(!file.exists()){
thrownewIOException("IOException->BadInputException:fileisnotexist.");
}
if(!file.delete()){
thrownewIOException("Cannotdeletefile.filename="+filename);
}
}
/**
*删除文件夹及其下面的子文件夹
*
*@paramdir
*@throwsIOException
*/
publicstaticvoiddeleteDir(Filedir)throwsIOException{
if(dir.isFile())
thrownewIOException("IOException->BadInputException:notadirectory.");
File[]files=dir.listFiles();
if(files!=null){
for(inti=0;i0){
out.write(buffer,0,len);
}
}catch(Exceptione){
throwe;
}finally{
if(null!=in){
try{
in.close();
}catch(IOExceptione){
e.printStackTrace();
}
in=null;
}
if(null!=out){
try{
out.close();
}catch(IOExceptione){
e.printStackTrace();
}
out=null;
}
}
}
/**
*@复制文件,支持把源文件内容追加到目标文件末尾
*@paramsrc
*@paramdst
*@paramappend
*@throwsException
*/
publicstaticvoidcopy(Filesrc,Filedst,booleanappend)throwsException{
intBUFFER_SIZE=4096;
InputStreamin=null;
OutputStreamout=null;
try{
in=newBufferedInputStream(newFileInputStream(src),BUFFER_SIZE);
out=newBufferedOutputStream(newFileOutputStream(dst,append),BUFFER_SIZE);
byte[]buffer=newbyte[BUFFER_SIZE];
intlen=0;
while((len=in.read(buffer))>0){
out.write(buffer,0,len);
}
}catch(Exceptione){
throwe;
}finally{
if(null!=in){
try{
in.close();
}catch(IOExceptione){
e.printStackTrace();
}
in=null;
}
if(null!=out){
try{
out.close();
}catch(IOExceptione){
e.printStackTrace();
}
out=null;
}
}
}
}
更多关于java算法相关内容感兴趣的读者可查看本站专题:《Java文件与目录操作技巧汇总》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》和《Java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。