java中关于文件操作常用工具类

简介:


import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import java.io.*;
import java.util.regex.Pattern;

public class FileUtil {
 private static final Log LOG = LogFactory.getLog(FileUtil.class);

 public static boolean delete(String f) {
  try {
   File file = new File(f);
   file.delete();
   return true;
  } catch (Exception e) {
   LOG.error("delete(String) String f:" + "f", e);
   return false;
  }
 }

 public static String read(String file) {
  String ret = null;

  File f = null;
  BufferedInputStream result = null;
  ByteArrayOutputStream baos = null;

  try {
   f = new File(file);
   if (!f.exists()) {
    if (LOG.isDebugEnabled()) {
     LOG.debug(file + " does not exist.");
    }
    return ret;
   } else if (!f.isFile()) {
    // fix bug:判断是否是文件,如果是一个目录是很危险的
    LOG.warn(file + " is not a file.");
    return ret;
   }
   result = new BufferedInputStream(new FileInputStream(f));
   baos = new ByteArrayOutputStream();
   byte[] cont = new byte[1024];
   int conlen;
   while ((conlen = result.read(cont)) >= 0) {
    baos.write(cont, 0, conlen);
   }
   ret = new String(baos.toByteArray());
  } catch (Exception e) {
   LOG.error("read(String)  file:" + file, e);
  } finally {
   try {
    if (result != null)
     result.close();
    if (baos != null)
     baos.close();
    f = null;
   } catch (Exception e) {
    LOG.error("read finally ", e);
   }
  }
  return ret;
 }
 public static byte[] readBytes(String file) {
  byte[] ret = null;

  File f = null;
  BufferedInputStream result = null;
  ByteArrayOutputStream baos = null;

  try {
   f = new File(file);
   if (!f.exists()) {
    if (LOG.isDebugEnabled()) {
     LOG.debug(file + " does not exist.");
    }
    return ret;
   } else if (!f.isFile()) {
    // fix bug:判断是否是文件,如果是一个目录是很危险的
    LOG.warn(file + " is not a file.");
    return ret;
   }
   result = new BufferedInputStream(new FileInputStream(f));
   baos = new ByteArrayOutputStream();
   byte[] cont = new byte[1024];
   int conlen;
   while ((conlen = result.read(cont)) >= 0) {
    baos.write(cont, 0, conlen);
   }
   ret = (baos.toByteArray());
  } catch (Exception e) {
   LOG.error("read(String)  file:" + file, e);
  } finally {
   try {
    if (result != null)
     result.close();
    if (baos != null)
     baos.close();
    f = null;
   } catch (Exception e) {
    LOG.error("read finally ", e);
   }
  }
  return ret;
 }

 public static boolean write(String content, String file) {
  try {
   return write(content, file, false);
  } catch (Exception e) {
   LOG.error("write(String,String)  file=" + file + "   ", e);
   return false;
  }
 }

 public static boolean write(byte[] content, String file) {
  boolean ret = false;

  FileOutputStream fos = null;
  try {
   File filedir = new File(getPath(file));
   if (!filedir.exists())
    filedir.mkdirs();
   fos = new FileOutputStream(file);
   fos.write(content);
   ret = true;
  } catch (Exception e) {
   LOG.error("write(byte,String) file=" + file, e);
  } finally {
   try {
    if (fos != null)
     fos.close();
   } catch (Exception e) {
    LOG.error(e);
   }
  }
  return ret;
 }

 public static boolean write(String content, String file, boolean append) {
  boolean ret = false;
  FileOutputStream fos = null;

  try {
   long t1 = System.currentTimeMillis();
   File filedir = new File(getPath(file));
   if (!filedir.exists())
    filedir.mkdirs();
   
   if(append)
    fos = new FileOutputStream(file, append);
   else
    fos = new FileOutputStream(file);
   
   fos.write(content.getBytes());
   long t2 = System.currentTimeMillis();
   ret = true;
  } catch (Exception e) {
   LOG.error("write(String,String,boolean) file=" + file, e);
   return false;
  } finally {
   try {
    if (fos != null)
     fos.close();
   } catch (Exception e) {
    LOG.error(e);
   }
  }
  return ret;
 }

 public static String getPath(String f) {
  try {
   return f.substring(0, f.lastIndexOf("/"));
  } catch (Exception e) {
   return "./";
  }
 }

 public static String[] getFileList(String dir) {
  try {
   File parent = new File(dir);
   if (!parent.isAbsolute() || !parent.isDirectory()) {
    return null;
   }
   return parent.list();
  } catch (Exception e) {
   return null;
  }
 }

 public static String[] getFileList(final String dir, final String pattern) {
  try {

   File parent = new File(dir);
   if (!parent.isAbsolute() || !parent.isDirectory()) {
    return null;
   }
   final Pattern namePattern = Pattern.compile(pattern);
   return parent.list(new FilenameFilter() {
    public boolean accept(File dir, String name) {
     if (namePattern.matcher(name).matches()) {
      return true;
     } else {
      return false;
     }
    }
   });

  } catch (Throwable te) {
   LOG.error("getFileList[dir=" + dir + ",pattern=" + pattern
     + "]error.", te);
   return null;
  }
 }

}

目录
相关文章
|
2天前
|
算法 Java 数据处理
从HashSet到TreeSet,Java集合框架中的Set接口及其实现类以其“不重复性”要求,彻底改变了处理唯一性数据的方式。
从HashSet到TreeSet,Java集合框架中的Set接口及其实现类以其“不重复性”要求,彻底改变了处理唯一性数据的方式。HashSet基于哈希表实现,提供高效的元素操作;TreeSet则通过红黑树实现元素的自然排序,适合需要有序访问的场景。本文通过示例代码详细介绍了两者的特性和应用场景。
17 6
|
3天前
|
IDE Java 编译器
Java:如何确定编译和运行时类路径是否一致
类路径(Classpath)是JVM用于查找类文件的路径列表,对编译和运行Java程序至关重要。编译时通过`javac -classpath`指定,运行时通过`java -classpath`指定。IDE如Eclipse和IntelliJ IDEA也提供界面管理类路径。确保编译和运行时类路径一致,特别是外部库和项目内部类的路径设置。
|
3天前
|
安全 Java 测试技术
Java零基础-StringBuffer 类详解
【10月更文挑战第9天】Java零基础教学篇,手把手实践教学!
11 2
|
4天前
|
算法 Java 数据处理
从HashSet到TreeSet,Java集合框架中的Set接口及其实现类以其独特的“不重复性”要求,彻底改变了处理唯一性约束数据的方式。
【10月更文挑战第14天】从HashSet到TreeSet,Java集合框架中的Set接口及其实现类以其独特的“不重复性”要求,彻底改变了处理唯一性约束数据的方式。本文深入探讨Set的核心理念,并通过示例代码展示了HashSet和TreeSet的特点和应用场景。
11 2
|
4天前
|
存储 Java 索引
Java 中集合框架的常见接口和类
【10月更文挑战第13天】这些只是集合框架中的一部分常见接口和类,还有其他一些如 Queue、Deque 等接口以及相关的实现类。理解和掌握这些集合的特点和用法对于高效编程非常重要。
|
4天前
|
Java
Java开发如何实现文件的移动,但是在移动结束后才进行读取?
【10月更文挑战第13天】Java开发如何实现文件的移动,但是在移动结束后才进行读取?
16 2
|
4天前
|
Java Apache Maven
Java将word文档转换成pdf文件的方法?
【10月更文挑战第13天】Java将word文档转换成pdf文件的方法?
16 1
|
4天前
|
监控 Java
Java定时扫码一个文件夹下的文件,如何保证文件写入完成后才进行处理?
【10月更文挑战第13天】Java定时扫码一个文件夹下的文件,如何保证文件写入完成后才进行处理?
18 1
|
9天前
|
小程序 Oracle Java
JVM知识体系学习一:JVM了解基础、java编译后class文件的类结构详解,class分析工具 javap 和 jclasslib 的使用
这篇文章是关于JVM基础知识的介绍,包括JVM的跨平台和跨语言特性、Class文件格式的详细解析,以及如何使用javap和jclasslib工具来分析Class文件。
22 0
JVM知识体系学习一:JVM了解基础、java编译后class文件的类结构详解,class分析工具 javap 和 jclasslib 的使用
|
11天前
|
存储 安全 Java
Java零基础-Java类详解
【10月更文挑战第2天】Java零基础教学篇,手把手实践教学!
13 2