首页 > 编程 > Java > 正文

java文件处理工具类详解

2019-11-26 09:04:21
字体:
来源:转载
供稿:网友

本文实例为大家分享了java文件处理工具类的具体代码,供大家参考,具体内容如下

import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.File;import java.io.FileFilter;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.ObjectInputStream;import java.io.ObjectOutput;import java.io.ObjectOutputStream;import java.io.OutputStream;import java.io.OutputStreamWriter;import java.io.Writer;import java.net.URL;import java.net.URLEncoder;import java.text.DecimalFormat;import java.util.ArrayList;import java.util.Collections;import java.util.Enumeration;import java.util.List;import java.util.Properties;import javax.servlet.ServletOutputStream;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;public class FileUtil{ private static Log logger = LogFactory.getLog(FileUtil.class);  public static void writeFile(String paramString1, String paramString2) {  writeFile(paramString1, paramString2, "utf-8"); }  public static void writeFile(String paramString1, String paramString2, String paramString3) {  try  {   createFolder(paramString1, true);   BufferedWriter localBufferedWriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(paramString1), paramString3));   localBufferedWriter.write(paramString2);   localBufferedWriter.close();  }  catch (IOException localIOException)  {   localIOException.printStackTrace();  } }  public static void writeFile(String paramString, InputStream paramInputStream)  throws IOException {  FileOutputStream localFileOutputStream = new FileOutputStream(paramString);  byte[] arrayOfByte = new byte['Ȁ'];  int i = 0;  while ((i = paramInputStream.read(arrayOfByte)) != -1) {   localFileOutputStream.write(arrayOfByte, 0, i);  }  paramInputStream.close();  localFileOutputStream.close(); }  public static String readFile(String paramString)  throws IOException {  try  {   File localFile = new File(paramString);   String str1 = getCharset(localFile);   StringBuffer localStringBuffer = new StringBuffer();   BufferedReader localBufferedReader = new BufferedReader(new InputStreamReader(new FileInputStream(paramString), str1));   String str2;   while ((str2 = localBufferedReader.readLine()) != null) {    localStringBuffer.append(str2 + "/r/n");   }   localBufferedReader.close();   return localStringBuffer.toString();  }  catch (IOException localIOException)  {   throw localIOException;  } }  public static boolean isExistFile(String paramString) {  boolean bool = false;  File localFile = new File(paramString);  if (localFile.isDirectory())  {   File[] arrayOfFile = localFile.listFiles();   if ((arrayOfFile != null) && (arrayOfFile.length != 0)) {    bool = true;   }  }  return bool; }  public static String getCharset(File paramFile) {  String str = "GBK";  byte[] arrayOfByte = new byte[3];  try  {   int i = 0;   BufferedInputStream localBufferedInputStream = new BufferedInputStream(new FileInputStream(paramFile));   localBufferedInputStream.mark(0);   int j = localBufferedInputStream.read(arrayOfByte, 0, 3);   if (j == -1) {    return str;   }   if ((arrayOfByte[0] == -1) && (arrayOfByte[1] == -2))   {    str = "UTF-16LE";    i = 1;   }   else if ((arrayOfByte[0] == -2) && (arrayOfByte[1] == -1))   {    str = "UTF-16BE";    i = 1;   }   else if ((arrayOfByte[0] == -17) && (arrayOfByte[1] == -69) && (arrayOfByte[2] == -65))   {    str = "UTF-8";    i = 1;   }   localBufferedInputStream.reset();   if (i == 0)   {    int k = 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;       }      }      else if ((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 (Exception localException)  {   localException.printStackTrace();  }  return str; }  public static byte[] readByte(InputStream paramInputStream) {  try  {   byte[] arrayOfByte = new byte[paramInputStream.available()];   paramInputStream.read(arrayOfByte);   return arrayOfByte;  }  catch (FileNotFoundException localFileNotFoundException)  {   logger.error("文件路径不存在:" + localFileNotFoundException.getMessage());  }  catch (Exception localException)  {   localException.printStackTrace();  }  return null; }  public static byte[] readByte(String paramString) {  try  {   FileInputStream localFileInputStream = new FileInputStream(paramString);   byte[] arrayOfByte = new byte[localFileInputStream.available()];   localFileInputStream.read(arrayOfByte);   localFileInputStream.close();   return arrayOfByte;  }  catch (FileNotFoundException localFileNotFoundException)  {   logger.error("文件路径不存在:" + paramString);  }  catch (Exception localException)  {   localException.printStackTrace();  }  return null; }  public static boolean writeByte(String paramString, byte[] paramArrayOfByte) {  try  {   BufferedOutputStream localBufferedOutputStream = new BufferedOutputStream(new FileOutputStream(paramString));   localBufferedOutputStream.write(paramArrayOfByte);   localBufferedOutputStream.close();   return true;  }  catch (Exception localException)  {   localException.printStackTrace();  }  return false; }  public static boolean deleteDir(File paramFile) {  if (paramFile.isDirectory())  {   String[] arrayOfString = paramFile.list();   for (int i = 0; i < arrayOfString.length; i++)   {    boolean bool = deleteDir(new File(paramFile, arrayOfString[i]));    if (!bool) {     return false;    }   }  }  return paramFile.delete(); }  public static void serializeToFile(Object paramObject, String paramString) {  try  {   ObjectOutputStream localObjectOutputStream = new ObjectOutputStream(new FileOutputStream(paramString));   localObjectOutputStream.writeObject(paramObject);   localObjectOutputStream.close();  }  catch (IOException localIOException)  {   localIOException.printStackTrace();  } }  public static Object deserializeFromFile(String paramString) {  try  {   File localFile = new File(paramString);   ObjectInputStream localObjectInputStream = new ObjectInputStream(new FileInputStream(localFile));   Object localObject = localObjectInputStream.readObject();   localObjectInputStream.close();   return localObject;  }  catch (Exception localException)  {   localException.printStackTrace();  }  return null; }  public static String inputStream2String(InputStream paramInputStream, String paramString)  throws IOException {  BufferedReader localBufferedReader = new BufferedReader(new InputStreamReader(paramInputStream, paramString));  StringBuffer localStringBuffer = new StringBuffer();  String str = "";  while ((str = localBufferedReader.readLine()) != null) {   localStringBuffer.append(str + "/n");  }  return localStringBuffer.toString(); }  public static String inputStream2String(InputStream paramInputStream)  throws IOException {  return inputStream2String(paramInputStream, "utf-8"); }  public static File[] getFiles(String paramString) {  File localFile = new File(paramString);  return localFile.listFiles(); }  public static void createFolderFile(String paramString) {  createFolder(paramString, true); }  public static void createFolder(String paramString, boolean paramBoolean) {  if (paramBoolean) {   paramString = paramString.substring(0, paramString.lastIndexOf(File.separator));  }  File localFile = new File(paramString);  if (!localFile.exists()) {   localFile.mkdirs();  } }  public static void createFolder(String paramString1, String paramString2) {  paramString1 = StringUtil.trimSufffix(paramString1, File.separator) + File.separator + paramString2;  File localFile = new File(paramString1);  localFile.mkdir(); }  public static void renameFolder(String paramString1, String paramString2) {  File localFile = new File(paramString1);  if (localFile.exists()) {   localFile.renameTo(new File(paramString2));  } }  public static ArrayList<File> getDiretoryOnly(File paramFile) {  ArrayList localArrayList = new ArrayList();  if ((paramFile != null) && (paramFile.exists()) && (paramFile.isDirectory()))  {   File[] arrayOfFile = paramFile.listFiles(new FileFilter()   {    public boolean accept(File paramAnonymousFile)    {     return paramAnonymousFile.isDirectory();    }   });   for (int i = 0; i < arrayOfFile.length; i++) {    localArrayList.add(arrayOfFile[i]);   }  }  return localArrayList; }  public ArrayList<File> getFileOnly(File paramFile) {  ArrayList localArrayList = new ArrayList();  File[] arrayOfFile = paramFile.listFiles(new FileFilter()  {   public boolean accept(File paramAnonymousFile)   {    return paramAnonymousFile.isFile();   }  });  for (int i = 0; i < arrayOfFile.length; i++) {   localArrayList.add(arrayOfFile[i]);  }  return localArrayList; }  public static boolean deleteFile(String paramString) {  File localFile = new File(paramString);  return localFile.delete(); }  public static boolean copyFile(String paramString1, String paramString2) {  File localFile1 = new File(paramString1);  File localFile2 = new File(paramString2);  FileInputStream localFileInputStream = null;  FileOutputStream localFileOutputStream = null;  try  {   localFileInputStream = new FileInputStream(localFile1);   localFileOutputStream = new FileOutputStream(localFile2);   byte[] arrayOfByte = new byte['က'];   int i;   while ((i = localFileInputStream.read(arrayOfByte)) != -1) {    localFileOutputStream.write(arrayOfByte, 0, i);   }   localFileOutputStream.flush();   localFileOutputStream.close();   localFileInputStream.close();  }  catch (IOException localIOException)  {   localIOException.printStackTrace();   return false;  }  return true; }  public static void backupFile(String paramString) {  String str = paramString + ".bak";  File localFile = new File(str);  if (localFile.exists()) {   localFile.delete();  }  copyFile(paramString, str); }  public static String getFileExt(File paramFile) {  if (paramFile.isFile()) {   return getFileExt(paramFile.getName());  }  return ""; }  public static String getFileExt(String paramString) {  int i = paramString.lastIndexOf(".");  if (i > -1) {   return paramString.substring(i + 1).toLowerCase();  }  return ""; }  public static void copyDir(String paramString1, String paramString2)  throws IOException {  new File(paramString2).mkdirs();  File[] arrayOfFile = new File(paramString1).listFiles();  for (int i = 0; i < arrayOfFile.length; i++)  {   if (arrayOfFile[i].isFile())   {    String str1 = arrayOfFile[i].getAbsolutePath();    String str2 = paramString2 + "/" + arrayOfFile[i].getName();    copyFile(str1, str2);   }   if (arrayOfFile[i].isDirectory()) {    copyDirectiory(paramString1 + "/" + arrayOfFile[i].getName(), paramString2 + "/" + arrayOfFile[i].getName());   }  } }  private static void copyDirectiory(String paramString1, String paramString2)  throws IOException {  new File(paramString2).mkdirs();  File[] arrayOfFile = new File(paramString1).listFiles();  for (int i = 0; i < arrayOfFile.length; i++)  {   if (arrayOfFile[i].isFile())   {    String str1 = arrayOfFile[i].getAbsolutePath();    String str2 = paramString2 + "/" + arrayOfFile[i].getName();    copyFile(str1, str2);   }   if (arrayOfFile[i].isDirectory()) {    copyDirectiory(paramString1 + "/" + arrayOfFile[i].getName(), paramString2 + "/" + arrayOfFile[i].getName());   }  } }  public static String getFileSize(File paramFile)  throws IOException {  if (paramFile.isFile())  {   FileInputStream localFileInputStream = new FileInputStream(paramFile);   int i = localFileInputStream.available();   localFileInputStream.close();   return getSize(i);  }  return ""; }  public static String getSize(double paramDouble) {  DecimalFormat localDecimalFormat = new DecimalFormat("0.00");  double d;  if (paramDouble > 1048576.0D)  {   d = paramDouble / 1048576.0D;   return localDecimalFormat.format(d) + " M";  }  if (paramDouble > 1024.0D)  {   d = paramDouble / 1024.0D;   return localDecimalFormat.format(d) + " KB";  }  return paramDouble + " bytes"; }  public static void downLoadFile(HttpServletRequest paramHttpServletRequest, HttpServletResponse paramHttpServletResponse, String paramString1, String paramString2)  throws IOException {  ServletOutputStream localServletOutputStream = paramHttpServletResponse.getOutputStream();  File localFile = new File(paramString1);  if (localFile.exists())  {   paramHttpServletResponse.setContentType("APPLICATION/OCTET-STREAM");   String str1 = getFileExt(paramString1);   if ((!Validation.isEmpty(str1)) && (str1.toLowerCase().equals("apk"))) {    paramHttpServletResponse.setContentType("application/vnd.android.package-archive");   }   String str2 = paramString2;   String str3 = paramHttpServletRequest.getHeader("USER-AGENT");   if ((str3 != null) && (str3.indexOf("MSIE") == -1))   {    try    {     String localObject1 = transCharacter(paramHttpServletRequest, str2);     paramHttpServletResponse.setHeader("Content-Disposition", "attachment; filename=" + (String)localObject1);    }    catch (Exception localException1)    {     localException1.printStackTrace();    }   }   else   {    str2 = URLEncoder.encode(str2, "utf-8");    paramHttpServletResponse.addHeader("Content-Disposition", "attachment;filename=" + str2);   }   Object localObject1 = null;   try   {    localServletOutputStream = paramHttpServletResponse.getOutputStream();    localObject1 = new FileInputStream(paramString1);    byte[] arrayOfByte = new byte['Ѐ'];    int i = 0;    while ((i = ((FileInputStream)localObject1).read(arrayOfByte)) > 0) {     localServletOutputStream.write(arrayOfByte, 0, i);    }    localServletOutputStream.flush();   }   catch (Exception localException2)   {    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"));  } }  private static String transCharacter(HttpServletRequest paramHttpServletRequest, String paramString)  throws Exception {  if (paramHttpServletRequest.getHeader("USER-AGENT").toLowerCase().indexOf("msie") > 0) {   return URLEncoder.encode(paramString, "UTF-8");  }  if (paramHttpServletRequest.getHeader("USER-AGENT").toLowerCase().indexOf("firefox") > 0) {   return new String(paramString.getBytes("UTF-8"), "ISO8859-1");  }  return new String(paramString.getBytes("gbk"), "ISO8859-1"); }  public static String getParentDir(String paramString1, String paramString2) {  File localFile = new File(paramString2);  String str1 = localFile.getParent();  String str2 = str1.replace(paramString1, "");  return str2.replace(File.separator, "/"); }  public static String getClassesPath() {  String str = StringUtil.trimSufffix(AppUtil.getRealPath("/"), File.separator) + "//WEB-INF//classes//".replace("//", File.separator);  return str; }  public static String getRootPath() {  String str = StringUtil.trimSufffix(AppUtil.getRealPath("/"), File.separator) + File.separator;  return str; }  public static String readFromProperties(String paramString1, String paramString2) {  String str1 = "";  BufferedInputStream localBufferedInputStream = null;  try  {   localBufferedInputStream = new BufferedInputStream(new FileInputStream(paramString1));   Properties localProperties = new Properties();   localProperties.load(localBufferedInputStream);   str1 = localProperties.getProperty(paramString2);   String str2 = str1;   return str2;  }  catch (Exception localException)  {   localException.printStackTrace();  }  finally  {   if (localBufferedInputStream != null) {    try    {     localBufferedInputStream.close();    }    catch (IOException localIOException3)    {     localIOException3.printStackTrace();    }   }  }  return str1; }  public static boolean saveProperties(String paramString1, String paramString2, String paramString3) {  StringBuffer localStringBuffer = new StringBuffer();  int i = 0;  BufferedReader localBufferedReader = null;  try  {   localBufferedReader = new BufferedReader(new InputStreamReader(new FileInputStream(paramString1), "utf-8"));   String str;   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");   boolean bool1 = true;   return bool1;  }  catch (Exception localException)  {   localException.printStackTrace();   boolean bool2 = false;   return bool2;  }  finally  {   if (localBufferedReader != null) {    try    {     localBufferedReader.close();    }    catch (IOException localIOException3)    {     localIOException3.printStackTrace();    }   }  } }  public static boolean delProperties(String paramString1, String paramString2) {  StringBuffer localStringBuffer = new StringBuffer();  BufferedReader localBufferedReader = null;  try  {   localBufferedReader = new BufferedReader(new InputStreamReader(new FileInputStream(paramString1), "utf-8"));   String str;   while ((str = localBufferedReader.readLine()) != null) {    if (!str.startsWith(paramString2)) {     localStringBuffer.append(str + "/r/n");    }   }   writeFile(paramString1, localStringBuffer.toString(), "utf-8");   boolean bool1 = true;   return bool1;  }  catch (Exception localException)  {   localException.printStackTrace();   boolean bool2 = false;   return bool2;  }  finally  {   if (localBufferedReader != null) {    try    {     localBufferedReader.close();    }    catch (IOException localIOException3)    {     localIOException3.printStackTrace();    }   }  } }  public static List<Class<?>> getAllClassesByInterface(Class<?> paramClass, boolean paramBoolean)  throws IOException, ClassNotFoundException, IllegalStateException {  if (!paramClass.isInterface()) {   throw new IllegalStateException("Class not a interface.");  }  ClassLoader localClassLoader = paramClass.getClassLoader();  String str = paramBoolean ? paramClass.getPackage().getName() : "/";  return findClasses(paramClass, localClassLoader, str); }  private static List<Class<?>> findClasses(Class<?> paramClass, ClassLoader paramClassLoader, String paramString)  throws IOException, ClassNotFoundException {  ArrayList localArrayList = new ArrayList();  String str = paramString.replace(".", "/");  Object localObject;  if (!str.equals("/"))  {   localObject = paramClassLoader.getResources(str);   while (((Enumeration)localObject).hasMoreElements())   {    URL localURL = (URL)((Enumeration)localObject).nextElement();    localArrayList.addAll(findResources(paramClass, new File(localURL.getFile()), paramString));   }  }  else  {   localObject = paramClassLoader.getResource("").getPath();   localArrayList.addAll(findResources(paramClass, new File((String)localObject), paramString));  }  return localArrayList; }  private static List<Class<?>> findResources(Class<?> paramClass, File paramFile, String paramString)  throws ClassNotFoundException {  ArrayList localArrayList = new ArrayList();  if (!paramFile.exists()) {   return Collections.EMPTY_LIST;  }  File[] arrayOfFile1 = paramFile.listFiles();  for (File localFile : 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()));     }    }   }   else if (localFile.getName().endsWith(".class"))   {    Class localClass = 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);    }   }  }  return localArrayList; }  public static Object cloneObject(Object paramObject)  throws Exception {  ByteArrayOutputStream localByteArrayOutputStream = new ByteArrayOutputStream();  ObjectOutputStream localObjectOutputStream = new ObjectOutputStream(localByteArrayOutputStream);  localObjectOutputStream.writeObject(paramObject);  ByteArrayInputStream localByteArrayInputStream = new ByteArrayInputStream(localByteArrayOutputStream.toByteArray());  ObjectInputStream localObjectInputStream = new ObjectInputStream(localByteArrayInputStream);  return localObjectInputStream.readObject(); }  public static boolean isFileType(String paramString1, String paramString2) {  boolean bool = false;  if (("IMAGE".equals(paramString2)) && ((paramString1.toUpperCase().equals("JPG")) || (paramString1.toUpperCase().equals("PNG")) || (paramString1.toUpperCase().equals("GIF")) || (paramString1.toUpperCase().equals("JPEG")))) {   bool = true;  }  return bool; }  public static boolean isFileType(String paramString, String[] paramArrayOfString) {  boolean bool = false;  if ((paramArrayOfString != null) && (paramArrayOfString.length > 0)) {   for (int i = 0; i < paramArrayOfString.length; i++) {    if (paramString.toUpperCase().equals(paramArrayOfString[i].toUpperCase())) {     return true;    }   }  }  return bool; }  public static boolean isErrorFileType(String paramString) {  String[] arrayOfString = null;  String str = AppConfigUtil.get("File_Filter_Val");  if ((AppConfigUtil.getICache("FILEFILTER_KEY") == null) && (str != null))  {   arrayOfString = str.split("//|");   AppConfigUtil.setICache("FILEFILTER_KEY", arrayOfString);  }  else  {   arrayOfString = (String[])AppConfigUtil.getICache("FILEFILTER_KEY");  }  return isFileType(paramString, arrayOfString); }}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表