java文件处理工具类详解
本文实例为大家分享了java文件处理工具类的具体代码,供大家参考,具体内容如下
importjava.io.BufferedInputStream;
importjava.io.BufferedOutputStream;
importjava.io.BufferedReader;
importjava.io.BufferedWriter;
importjava.io.ByteArrayInputStream;
importjava.io.ByteArrayOutputStream;
importjava.io.File;
importjava.io.FileFilter;
importjava.io.FileInputStream;
importjava.io.FileNotFoundException;
importjava.io.FileOutputStream;
importjava.io.IOException;
importjava.io.InputStream;
importjava.io.InputStreamReader;
importjava.io.ObjectInputStream;
importjava.io.ObjectOutput;
importjava.io.ObjectOutputStream;
importjava.io.OutputStream;
importjava.io.OutputStreamWriter;
importjava.io.Writer;
importjava.net.URL;
importjava.net.URLEncoder;
importjava.text.DecimalFormat;
importjava.util.ArrayList;
importjava.util.Collections;
importjava.util.Enumeration;
importjava.util.List;
importjava.util.Properties;
importjavax.servlet.ServletOutputStream;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importorg.apache.commons.logging.Log;
importorg.apache.commons.logging.LogFactory;
publicclassFileUtil
{
privatestaticLoglogger=LogFactory.getLog(FileUtil.class);
publicstaticvoidwriteFile(StringparamString1,StringparamString2)
{
writeFile(paramString1,paramString2,"utf-8");
}
publicstaticvoidwriteFile(StringparamString1,StringparamString2,StringparamString3)
{
try
{
createFolder(paramString1,true);
BufferedWriterlocalBufferedWriter=newBufferedWriter(newOutputStreamWriter(newFileOutputStream(paramString1),paramString3));
localBufferedWriter.write(paramString2);
localBufferedWriter.close();
}
catch(IOExceptionlocalIOException)
{
localIOException.printStackTrace();
}
}
publicstaticvoidwriteFile(StringparamString,InputStreamparamInputStream)
throwsIOException
{
FileOutputStreamlocalFileOutputStream=newFileOutputStream(paramString);
byte[]arrayOfByte=newbyte['Ȁ'];
inti=0;
while((i=paramInputStream.read(arrayOfByte))!=-1){
localFileOutputStream.write(arrayOfByte,0,i);
}
paramInputStream.close();
localFileOutputStream.close();
}
publicstaticStringreadFile(StringparamString)
throwsIOException
{
try
{
FilelocalFile=newFile(paramString);
Stringstr1=getCharset(localFile);
StringBufferlocalStringBuffer=newStringBuffer();
BufferedReaderlocalBufferedReader=newBufferedReader(newInputStreamReader(newFileInputStream(paramString),str1));
Stringstr2;
while((str2=localBufferedReader.readLine())!=null){
localStringBuffer.append(str2+"\r\n");
}
localBufferedReader.close();
returnlocalStringBuffer.toString();
}
catch(IOExceptionlocalIOException)
{
throwlocalIOException;
}
}
publicstaticbooleanisExistFile(StringparamString)
{
booleanbool=false;
FilelocalFile=newFile(paramString);
if(localFile.isDirectory())
{
File[]arrayOfFile=localFile.listFiles();
if((arrayOfFile!=null)&&(arrayOfFile.length!=0)){
bool=true;
}
}
returnbool;
}
publicstaticStringgetCharset(FileparamFile)
{
Stringstr="GBK";
byte[]arrayOfByte=newbyte[3];
try
{
inti=0;
BufferedInputStreamlocalBufferedInputStream=newBufferedInputStream(newFileInputStream(paramFile));
localBufferedInputStream.mark(0);
intj=localBufferedInputStream.read(arrayOfByte,0,3);
if(j==-1){
returnstr;
}
if((arrayOfByte[0]==-1)&&(arrayOfByte[1]==-2))
{
str="UTF-16LE";
i=1;
}
elseif((arrayOfByte[0]==-2)&&(arrayOfByte[1]==-1))
{
str="UTF-16BE";
i=1;
}
elseif((arrayOfByte[0]==-17)&&(arrayOfByte[1]==-69)&&(arrayOfByte[2]==-65))
{
str="UTF-8";
i=1;
}
localBufferedInputStream.reset();
if(i==0)
{
intk=0;
while((j=localBufferedInputStream.read())!=-1)
{
k++;
if((j<240)&&((128>j)||(j>191))){
if((192<=j)&&(j<=223))
{
j=localBufferedInputStream.read();
if(128>j){
break;
}
if(j>191){
break;
}
}
elseif((224<=j)&&(j<=239))
{
j=localBufferedInputStream.read();
if((128<=j)&&(j<=191))
{
j=localBufferedInputStream.read();
if((128<=j)&&(j<=191)){
str="UTF-8";
}
}
}
}
}
}
localBufferedInputStream.close();
}
catch(ExceptionlocalException)
{
localException.printStackTrace();
}
returnstr;
}
publicstaticbyte[]readByte(InputStreamparamInputStream)
{
try
{
byte[]arrayOfByte=newbyte[paramInputStream.available()];
paramInputStream.read(arrayOfByte);
returnarrayOfByte;
}
catch(FileNotFoundExceptionlocalFileNotFoundException)
{
logger.error("文件路径不存在:"+localFileNotFoundException.getMessage());
}
catch(ExceptionlocalException)
{
localException.printStackTrace();
}
returnnull;
}
publicstaticbyte[]readByte(StringparamString)
{
try
{
FileInputStreamlocalFileInputStream=newFileInputStream(paramString);
byte[]arrayOfByte=newbyte[localFileInputStream.available()];
localFileInputStream.read(arrayOfByte);
localFileInputStream.close();
returnarrayOfByte;
}
catch(FileNotFoundExceptionlocalFileNotFoundException)
{
logger.error("文件路径不存在:"+paramString);
}
catch(ExceptionlocalException)
{
localException.printStackTrace();
}
returnnull;
}
publicstaticbooleanwriteByte(StringparamString,byte[]paramArrayOfByte)
{
try
{
BufferedOutputStreamlocalBufferedOutputStream=newBufferedOutputStream(newFileOutputStream(paramString));
localBufferedOutputStream.write(paramArrayOfByte);
localBufferedOutputStream.close();
returntrue;
}
catch(ExceptionlocalException)
{
localException.printStackTrace();
}
returnfalse;
}
publicstaticbooleandeleteDir(FileparamFile)
{
if(paramFile.isDirectory())
{
String[]arrayOfString=paramFile.list();
for(inti=0;igetDiretoryOnly(FileparamFile)
{
ArrayListlocalArrayList=newArrayList();
if((paramFile!=null)&&(paramFile.exists())&&(paramFile.isDirectory()))
{
File[]arrayOfFile=paramFile.listFiles(newFileFilter()
{
publicbooleanaccept(FileparamAnonymousFile)
{
returnparamAnonymousFile.isDirectory();
}
});
for(inti=0;igetFileOnly(FileparamFile)
{
ArrayListlocalArrayList=newArrayList();
File[]arrayOfFile=paramFile.listFiles(newFileFilter()
{
publicbooleanaccept(FileparamAnonymousFile)
{
returnparamAnonymousFile.isFile();
}
});
for(inti=0;i-1){
returnparamString.substring(i+1).toLowerCase();
}
return"";
}
publicstaticvoidcopyDir(StringparamString1,StringparamString2)
throwsIOException
{
newFile(paramString2).mkdirs();
File[]arrayOfFile=newFile(paramString1).listFiles();
for(inti=0;i1048576.0D)
{
d=paramDouble/1048576.0D;
returnlocalDecimalFormat.format(d)+"M";
}
if(paramDouble>1024.0D)
{
d=paramDouble/1024.0D;
returnlocalDecimalFormat.format(d)+"KB";
}
returnparamDouble+"bytes";
}
publicstaticvoiddownLoadFile(HttpServletRequestparamHttpServletRequest,HttpServletResponseparamHttpServletResponse,StringparamString1,StringparamString2)
throwsIOException
{
ServletOutputStreamlocalServletOutputStream=paramHttpServletResponse.getOutputStream();
FilelocalFile=newFile(paramString1);
if(localFile.exists())
{
paramHttpServletResponse.setContentType("APPLICATION/OCTET-STREAM");
Stringstr1=getFileExt(paramString1);
if((!Validation.isEmpty(str1))&&(str1.toLowerCase().equals("apk"))){
paramHttpServletResponse.setContentType("application/vnd.android.package-archive");
}
Stringstr2=paramString2;
Stringstr3=paramHttpServletRequest.getHeader("USER-AGENT");
if((str3!=null)&&(str3.indexOf("MSIE")==-1))
{
try
{
StringlocalObject1=transCharacter(paramHttpServletRequest,str2);
paramHttpServletResponse.setHeader("Content-Disposition","attachment;filename="+(String)localObject1);
}
catch(ExceptionlocalException1)
{
localException1.printStackTrace();
}
}
else
{
str2=URLEncoder.encode(str2,"utf-8");
paramHttpServletResponse.addHeader("Content-Disposition","attachment;filename="+str2);
}
ObjectlocalObject1=null;
try
{
localServletOutputStream=paramHttpServletResponse.getOutputStream();
localObject1=newFileInputStream(paramString1);
byte[]arrayOfByte=newbyte['Ѐ'];
inti=0;
while((i=((FileInputStream)localObject1).read(arrayOfByte))>0){
localServletOutputStream.write(arrayOfByte,0,i);
}
localServletOutputStream.flush();
}
catch(ExceptionlocalException2)
{
localException2.printStackTrace();
}
finally
{
if(localObject1!=null)
{
((FileInputStream)localObject1).close();
localObject1=null;
}
if(localServletOutputStream!=null)
{
localServletOutputStream.close();
localServletOutputStream=null;
paramHttpServletResponse.flushBuffer();
}
}
}
else
{
localServletOutputStream.write("文件不存在!".getBytes("utf-8"));
}
}
privatestaticStringtransCharacter(HttpServletRequestparamHttpServletRequest,StringparamString)
throwsException
{
if(paramHttpServletRequest.getHeader("USER-AGENT").toLowerCase().indexOf("msie")>0){
returnURLEncoder.encode(paramString,"UTF-8");
}
if(paramHttpServletRequest.getHeader("USER-AGENT").toLowerCase().indexOf("firefox")>0){
returnnewString(paramString.getBytes("UTF-8"),"ISO8859-1");
}
returnnewString(paramString.getBytes("gbk"),"ISO8859-1");
}
publicstaticStringgetParentDir(StringparamString1,StringparamString2)
{
FilelocalFile=newFile(paramString2);
Stringstr1=localFile.getParent();
Stringstr2=str1.replace(paramString1,"");
returnstr2.replace(File.separator,"/");
}
publicstaticStringgetClassesPath()
{
Stringstr=StringUtil.trimSufffix(AppUtil.getRealPath("/"),File.separator)+"\\WEB-INF\\classes\\".replace("\\",File.separator);
returnstr;
}
publicstaticStringgetRootPath()
{
Stringstr=StringUtil.trimSufffix(AppUtil.getRealPath("/"),File.separator)+File.separator;
returnstr;
}
publicstaticStringreadFromProperties(StringparamString1,StringparamString2)
{
Stringstr1="";
BufferedInputStreamlocalBufferedInputStream=null;
try
{
localBufferedInputStream=newBufferedInputStream(newFileInputStream(paramString1));
PropertieslocalProperties=newProperties();
localProperties.load(localBufferedInputStream);
str1=localProperties.getProperty(paramString2);
Stringstr2=str1;
returnstr2;
}
catch(ExceptionlocalException)
{
localException.printStackTrace();
}
finally
{
if(localBufferedInputStream!=null){
try
{
localBufferedInputStream.close();
}
catch(IOExceptionlocalIOException3)
{
localIOException3.printStackTrace();
}
}
}
returnstr1;
}
publicstaticbooleansaveProperties(StringparamString1,StringparamString2,StringparamString3)
{
StringBufferlocalStringBuffer=newStringBuffer();
inti=0;
BufferedReaderlocalBufferedReader=null;
try
{
localBufferedReader=newBufferedReader(newInputStreamReader(newFileInputStream(paramString1),"utf-8"));
Stringstr;
while((str=localBufferedReader.readLine())!=null){
if(str.startsWith(paramString2))
{
localStringBuffer.append(paramString2+"="+paramString3+"\r\n");
i=1;
}
else
{
localStringBuffer.append(str+"\r\n");
}
}
if(i==0){
localStringBuffer.append(paramString2+"="+paramString3+"\r\n");
}
writeFile(paramString1,localStringBuffer.toString(),"utf-8");
booleanbool1=true;
returnbool1;
}
catch(ExceptionlocalException)
{
localException.printStackTrace();
booleanbool2=false;
returnbool2;
}
finally
{
if(localBufferedReader!=null){
try
{
localBufferedReader.close();
}
catch(IOExceptionlocalIOException3)
{
localIOException3.printStackTrace();
}
}
}
}
publicstaticbooleandelProperties(StringparamString1,StringparamString2)
{
StringBufferlocalStringBuffer=newStringBuffer();
BufferedReaderlocalBufferedReader=null;
try
{
localBufferedReader=newBufferedReader(newInputStreamReader(newFileInputStream(paramString1),"utf-8"));
Stringstr;
while((str=localBufferedReader.readLine())!=null){
if(!str.startsWith(paramString2)){
localStringBuffer.append(str+"\r\n");
}
}
writeFile(paramString1,localStringBuffer.toString(),"utf-8");
booleanbool1=true;
returnbool1;
}
catch(ExceptionlocalException)
{
localException.printStackTrace();
booleanbool2=false;
returnbool2;
}
finally
{
if(localBufferedReader!=null){
try
{
localBufferedReader.close();
}
catch(IOExceptionlocalIOException3)
{
localIOException3.printStackTrace();
}
}
}
}
publicstaticList>getAllClassesByInterface(Class>paramClass,booleanparamBoolean)
throwsIOException,ClassNotFoundException,IllegalStateException
{
if(!paramClass.isInterface()){
thrownewIllegalStateException("Classnotainterface.");
}
ClassLoaderlocalClassLoader=paramClass.getClassLoader();
Stringstr=paramBoolean?paramClass.getPackage().getName():"/";
returnfindClasses(paramClass,localClassLoader,str);
}
privatestaticList>findClasses(Class>paramClass,ClassLoaderparamClassLoader,StringparamString)
throwsIOException,ClassNotFoundException
{
ArrayListlocalArrayList=newArrayList();
Stringstr=paramString.replace(".","/");
ObjectlocalObject;
if(!str.equals("/"))
{
localObject=paramClassLoader.getResources(str);
while(((Enumeration)localObject).hasMoreElements())
{
URLlocalURL=(URL)((Enumeration)localObject).nextElement();
localArrayList.addAll(findResources(paramClass,newFile(localURL.getFile()),paramString));
}
}
else
{
localObject=paramClassLoader.getResource("").getPath();
localArrayList.addAll(findResources(paramClass,newFile((String)localObject),paramString));
}
returnlocalArrayList;
}
privatestaticList>findResources(Class>paramClass,FileparamFile,StringparamString)
throwsClassNotFoundException
{
ArrayListlocalArrayList=newArrayList();
if(!paramFile.exists()){
returnCollections.EMPTY_LIST;
}
File[]arrayOfFile1=paramFile.listFiles();
for(FilelocalFile:arrayOfFile1){
if(localFile.isDirectory())
{
if(!localFile.getName().contains(".")){
if(!paramString.equals("/")){
localArrayList.addAll(findResources(paramClass,localFile,paramString+"."+localFile.getName()));
}else{
localArrayList.addAll(findResources(paramClass,localFile,localFile.getName()));
}
}
}
elseif(localFile.getName().endsWith(".class"))
{
ClasslocalClass=null;
if(!paramString.equals("/")){
localClass=Class.forName(paramString+"."+localFile.getName().substring(0,localFile.getName().length()-6));
}else{
localClass=Class.forName(localFile.getName().substring(0,localFile.getName().length()-6));
}
if((paramClass.isAssignableFrom(localClass))&&(!paramClass.equals(localClass))){
localArrayList.add(localClass);
}
}
}
returnlocalArrayList;
}
publicstaticObjectcloneObject(ObjectparamObject)
throwsException
{
ByteArrayOutputStreamlocalByteArrayOutputStream=newByteArrayOutputStream();
ObjectOutputStreamlocalObjectOutputStream=newObjectOutputStream(localByteArrayOutputStream);
localObjectOutputStream.writeObject(paramObject);
ByteArrayInputStreamlocalByteArrayInputStream=newByteArrayInputStream(localByteArrayOutputStream.toByteArray());
ObjectInputStreamlocalObjectInputStream=newObjectInputStream(localByteArrayInputStream);
returnlocalObjectInputStream.readObject();
}
publicstaticbooleanisFileType(StringparamString1,StringparamString2)
{
booleanbool=false;
if(("IMAGE".equals(paramString2))&&((paramString1.toUpperCase().equals("JPG"))||(paramString1.toUpperCase().equals("PNG"))||(paramString1.toUpperCase().equals("GIF"))||(paramString1.toUpperCase().equals("JPEG")))){
bool=true;
}
returnbool;
}
publicstaticbooleanisFileType(StringparamString,String[]paramArrayOfString)
{
booleanbool=false;
if((paramArrayOfString!=null)&&(paramArrayOfString.length>0)){
for(inti=0;i
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。