Java文件操作工具类fileUtil实例【文件增删改,复制等】

作者:lovoo 时间:2023-11-28 08:39:00 

本文实例讲述了Java文件操作工具类fileUtil。分享给大家供大家参考,具体如下:


package com.gcloud.common;
import java.io.*;
import java.net.MalformedURLException;
import java.net.URL;
/**
* 文件工具类
* Created by charlin on 2017/9/8.
*/
public class FileUtil {
 /**
  * 读取文件内容
  *
  * @param is
  * @return
  */
 public static String readFile(InputStream is) {
   BufferedReader br = null;
   StringBuffer sb = new StringBuffer();
   try {
     br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
     String readLine = null;
     while ((readLine = br.readLine()) != null) {
       sb.append(readLine);
     }
   } catch (Exception e) {
     e.printStackTrace();
   } finally {
     try {
       br.close();
       is.close();
     } catch (IOException e) {
       e.printStackTrace();
     }
   }
   return sb.toString();
 }
 /**
  * 判断指定的文件是否存在。
  *
  * @param fileName
  * @return
  */
 public static boolean isFileExist(String fileName) {
   return new File(fileName).isFile();
 }
 /**
  * 创建指定的目录。 如果指定的目录的父目录不存在则创建其目录书上所有需要的父目录。
  * 注意:可能会在返回false的时候创建部分父目录。
  *
  * @param file
  * @return
  */
 public static boolean makeDirectory(File file) {
   File parent = file.getParentFile();
   if (parent != null) {
     return parent.mkdirs();
   }
   return false;
 }
 /**
  * 返回文件的URL地址。
  *
  * @param file
  * @return
  * @throws MalformedURLException
  */
 public static URL getURL(File file) throws MalformedURLException {
   String fileURL = "file:/" + file.getAbsolutePath();
   URL url = new URL(fileURL);
   return url;
 }
 /**
  * 从文件路径得到文件名。
  *
  * @param filePath
  * @return
  */
 public static String getFileName(String filePath) {
   File file = new File(filePath);
   return file.getName();
 }
 /**
  * 从文件名得到文件绝对路径。
  *
  * @param fileName
  * @return
  */
 public static String getFilePath(String fileName) {
   File file = new File(fileName);
   return file.getAbsolutePath();
 }
 /**
  * 将DOS/Windows格式的路径转换为UNIX/Linux格式的路径。
  *
  * @param filePath
  * @return
  */
 public static String toUNIXpath(String filePath) {
   return filePath.replace("", "/");
 }
 /**
  * 从文件名得到UNIX风格的文件绝对路径。
  *
  * @param fileName
  * @return
  */
 public static String getUNIXfilePath(String fileName) {
   File file = new File(fileName);
   return toUNIXpath(file.getAbsolutePath());
 }
 /**
  * 得到文件后缀名
  *
  * @param fileName
  * @return
  */
 public static String getFileExt(String fileName) {
   int point = fileName.lastIndexOf('.');
   int length = fileName.length();
   if (point == -1 || point == length - 1) {
     return "";
   } else {
     return fileName.substring(point + 1, length);
   }
 }
 /**
  * 得到文件的名字部分。 实际上就是路径中的最后一个路径分隔符后的部分。
  *
  * @param fileName
  * @return
  */
 public static String getNamePart(String fileName) {
   int point = getPathLastIndex(fileName);
   int length = fileName.length();
   if (point == -1) {
     return fileName;
   } else if (point == length - 1) {
     int secondPoint = getPathLastIndex(fileName, point - 1);
     if (secondPoint == -1) {
       if (length == 1) {
         return fileName;
       } else {
         return fileName.substring(0, point);
       }
     } else {
       return fileName.substring(secondPoint + 1, point);
     }
   } else {
     return fileName.substring(point + 1);
   }
 }
 /**
  * 得到文件名中的父路径部分。 对两种路径分隔符都有效。 不存在时返回""。
  * 如果文件名是以路径分隔符结尾的则不考虑该分隔符,例如"/path/"返回""。
  *
  * @param fileName
  * @return
  */
 public static String getPathPart(String fileName) {
   int point = getPathLastIndex(fileName);
   int length = fileName.length();
   if (point == -1) {
     return "";
   } else if (point == length - 1) {
     int secondPoint = getPathLastIndex(fileName, point - 1);
     if (secondPoint == -1) {
       return "";
     } else {
       return fileName.substring(0, secondPoint);
     }
   } else {
     return fileName.substring(0, point);
   }
 }
 /**
  * 得到路径分隔符在文件路径中最后出现的位置。 对于DOS或者UNIX风格的分隔符都可以。
  *
  * @param fileName
  * @return
  */
 public static int getPathLastIndex(String fileName) {
   int point = fileName.lastIndexOf("/");
   if (point == -1) {
     point = fileName.lastIndexOf("");
   }
   return point;
 }
 /**
  * 得到路径分隔符在文件路径中指定位置前最后出现的位置。 对于DOS或者UNIX风格的分隔符都可以。
  *
  * @param fileName
  * @param fromIndex
  * @return
  */
 public static int getPathLastIndex(String fileName, int fromIndex) {
   int point = fileName.lastIndexOf("/", fromIndex);
   if (point == -1) {
     point = fileName.lastIndexOf("", fromIndex);
   }
   return point;
 }
 /**
  * 得到路径分隔符在文件路径中首次出现的位置。 对于DOS或者UNIX风格的分隔符都可以。
  *
  * @param fileName
  * @return
  */
 public static int getPathIndex(String fileName) {
   int point = fileName.indexOf("/");
   if (point == -1) {
     point = fileName.indexOf("");
   }
   return point;
 }
 /**
  * 得到路径分隔符在文件路径中指定位置后首次出现的位置。 对于DOS或者UNIX风格的分隔符都可以。
  *
  * @param fileName
  * @param fromIndex
  * @return
  */
 public static int getPathIndex(String fileName, int fromIndex) {
   int point = fileName.indexOf("/", fromIndex);
   if (point == -1) {
     point = fileName.indexOf("", fromIndex);
   }
   return point;
 }
 /**
  * 将文件名中的类型部分去掉。
  *
  * @param filename
  * @return
  */
 public static String removeFileExt(String filename) {
   int index = filename.lastIndexOf(".");
   if (index != -1) {
     return filename.substring(0, index);
   } else {
     return filename;
   }
 }
 /**
  * 得到相对路径。 文件名不是目录名的子节点时返回文件名。
  *
  * @param pathName
  * @param fileName
  * @return
  */
 public static String getSubpath(String pathName, String fileName) {
   int index = fileName.indexOf(pathName);
   if (index != -1) {
     return fileName.substring(index + pathName.length() + 1);
   } else {
     return fileName;
   }
 }
 /**
  * 删除一个文件。
  *
  * @param filename
  * @throws IOException
  */
 public static void deleteFile(String filename) throws IOException {
   File file = new File(filename);
   if (file.isDirectory()) {
     throw new IOException("IOException -> BadInputException: not a file.");
   }
   if (!file.exists()) {
     throw new IOException("IOException -> BadInputException: file is not exist.");
   }
   if (!file.delete()) {
     throw new IOException("Cannot delete file. filename = " + filename);
   }
 }
 /**
  * 删除文件夹及其下面的子文件夹
  *
  * @param dir
  * @throws IOException
  */
 public static void deleteDir(File dir) throws IOException {
   if (dir.isFile())
     throw new IOException("IOException -> BadInputException: not a directory.");
   File[] files = dir.listFiles();
   if (files != null) {
     for (int i = 0; i < files.length; i++) {
       File file = files[i];
       if (file.isFile()) {
         file.delete();
       } else {
         deleteDir(file);
       }
     }
   }
   dir.delete();
 }
 /**
  * 复制文件
  *
  * @param src
  * @param dst
  * @throws Exception
  */
 public static void copy(File src, File dst) throws Exception {
   int BUFFER_SIZE = 4096;
   InputStream in = null;
   OutputStream out = null;
   try {
     in = new BufferedInputStream(new FileInputStream(src), BUFFER_SIZE);
     out = new BufferedOutputStream(new FileOutputStream(dst), BUFFER_SIZE);
     byte[] buffer = new byte[BUFFER_SIZE];
     int len = 0;
     while ((len = in.read(buffer)) > 0) {
       out.write(buffer, 0, len);
     }
   } catch (Exception e) {
     throw e;
   } finally {
     if (null != in) {
       try {
         in.close();
       } catch (IOException e) {
         e.printStackTrace();
       }
       in = null;
     }
     if (null != out) {
       try {
         out.close();
       } catch (IOException e) {
         e.printStackTrace();
       }
       out = null;
     }
   }
 }
 /**
  * @复制文件,支持把源文件内容追加到目标文件末尾
  * @param src
  * @param dst
  * @param append
  * @throws Exception
  */
 public static void copy(File src, File dst, boolean append) throws Exception {
   int BUFFER_SIZE = 4096;
   InputStream in = null;
   OutputStream out = null;
   try {
     in = new BufferedInputStream(new FileInputStream(src), BUFFER_SIZE);
     out = new BufferedOutputStream(new FileOutputStream(dst, append), BUFFER_SIZE);
     byte[] buffer = new byte[BUFFER_SIZE];
     int len = 0;
     while ((len = in.read(buffer)) > 0) {
       out.write(buffer, 0, len);
     }
   } catch (Exception e) {
     throw e;
   } finally {
     if (null != in) {
       try {
         in.close();
       } catch (IOException e) {
         e.printStackTrace();
       }
       in = null;
     }
     if (null != out) {
       try {
         out.close();
       } catch (IOException e) {
         e.printStackTrace();
       }
       out = null;
     }
   }
 }
}

希望本文所述对大家java程序设计有所帮助。

来源:http://blog.csdn.net/lovoo/article/details/77899627

标签:Java,文件,工具类
0
投稿

猜你喜欢

  • Spring Cloud Gateway重试机制的实现

    2023-11-06 01:32:59
  • Android应用开发中使用Fragment的入门学习教程

    2023-05-17 04:30:59
  • Java包装类的概述与应用

    2022-03-14 07:50:43
  • Android Force Close 出现的异常原因分析及解决方法

    2021-09-07 18:26:47
  • Android实现应用内置语言切换功能

    2021-11-14 13:19:50
  • 使用C#实现读取系统配置文件的代码实例讲解

    2023-02-18 10:36:56
  • Android 源码如何编译调试

    2023-09-03 07:46:40
  • Java 实现协程的方法

    2022-02-18 22:55:05
  • 用C#获取硬盘序列号,CPU序列号,网卡MAC地址的源码

    2022-01-04 01:19:59
  • 基于C语言实现井字棋游戏

    2023-06-28 21:23:18
  • Android 仿京东、拼多多商品分类页的示例代码

    2023-05-02 13:55:30
  • 一篇文章带你入门Java接口

    2023-11-06 02:07:55
  • Java解析json报文实例解析

    2023-07-18 21:33:58
  • Java多线程synchronized同步方法详解

    2023-06-30 00:39:42
  • 详解Java中的数组与字符串相关知识

    2023-02-10 03:31:10
  • Android仿微信微博多图展示效果

    2023-03-04 11:02:55
  • 浅谈java 重写equals方法的种种坑

    2023-02-03 08:14:12
  • 基于OpenCv与JVM实现加载保存图像功能(JAVA 图像处理)

    2021-12-27 23:09:33
  • java Apache poi 对word doc文件进行读写操作

    2023-09-23 02:13:15
  • Java事件处理步骤讲解

    2023-10-14 11:49:57
  • asp之家 软件编程 m.aspxhome.com