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

本文实例讲述了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算法相关内容感兴趣的读者可查看本站专题:《Java文件与目录操作技巧汇总》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》和《Java缓存操作技巧汇总》

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

(0)

相关推荐

  • 利用Java获取文件名、类名、方法名和行号的方法小结

    大家都知道,在C语言中,我们可以通过宏FILE. __LINE__来获取文件名和行号,而在Java语言中,则可以通过StackTraceElement类来获取文件名.类名.方法名.行号,具体代码如下: public static int getLineNumber( ){ StackTraceElement[] stackTrace = new Throwable().getStackTrace(); return stackTrace[1].getLineNumber( ); } public

  • java文件操作工具类分享(file文件工具类)

    复制代码 代码如下: import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.Fil

  • java文件操作工具类

    最近为了修改大量收藏的美剧文件名,用swing写了个小工具,代码是文件处理部分,具体内容如下 package datei.steuern; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FileWriter

  • java文件操作工具类实现复制文件和文件合并

    两个方法:1.复制一个目录下面的所有文件和文件夹2.将一个文件目录下面的所有文本文件合并到同一个文件中 复制代码 代码如下: package com.firewolf.test; import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException; public class FileReaderUtil { public static void

  • 一个Java配置文件加密解密工具类分享

    常见的如: 数据库用户密码,短信平台用户密码,系统间校验的固定密码等.本工具类参考了 <Spring.3.x企业应用开发实战>一书 5.3节的实现.完整代码与注释信息如下: 复制代码 代码如下: package com.cncounter.util.comm; import java.security.Key;import java.security.SecureRandom; import javax.crypto.Cipher;import javax.crypto.KeyGenerato

  • 详解Java中的File文件类以及FileDescriptor文件描述类

    File File 是"文件"和"目录路径名"的抽象表示形式. File 直接继承于Object,实现了Serializable接口和Comparable接口.实现Serializable接口,意味着File对象支持序列化操作.而实现Comparable接口,意味着File对象之间可以比较大小:File能直接被存储在有序集合(如TreeSet.TreeMap中). 1. 新建目录的常用方法 方法1:根据相对路径新建目录. 示例代码如下(在当前路径下新建目录"

  • java工具类之实现java获取文件行数

    工具类代码,取得当前项目中所有java文件总行数,代码行数,注释行数,空白行数 复制代码 代码如下: import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.IOException;import java.io.Reader;import

  • Java实现的读取资源文件工具类ResourcesUtil实例【可动态更改值的内容】

    本文实例讲述了Java实现的读取资源文件工具类ResourcesUtil.分享给大家供大家参考,具体如下: package com.gcloud.common; import java.io.Serializable; import java.text.MessageFormat; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Locale; impor

  • java按指定编码写入和读取文件内容的类分享

    可以指定编码如:utf-8来写入和读取文件.如果文件编码未知,可以通过该方法先得到文件的编码后再指定正确的编码来读取,否则会出现文件乱码问题. 如何识别文件编码请参考:java自动根据文件内容的编码来读取避免乱码 复制代码 代码如下: package com.zuidaima.util; import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileInputS

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

    本文实例讲述了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 *

  • Android开发中的文件操作工具类FileUtil完整实例

    本文实例讲述了Android开发中的文件操作工具类FileUtil.分享给大家供大家参考,具体如下: package com.ymerp.android.tools; import java.io.BufferedReader; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java

  • JavaSE文件操作工具类FileUtil详解

    本文实例为大家分享了JavaSE文件操作工具类FileUtil的具体代码,供大家参考,具体内容如下 先展示一下文件工具类中打印文件夹树形结构的结果: 代码如下: package com.mjq.iotest; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FilenameFilter; import java.io.IOException;

  • Android文件操作工具类详解

    本文实例为大家分享了Android文件操作工具类的具体代码,供大家参考,具体内容如下 贴上我写的一个文件操作工具类,基本上覆盖了各种文件操作: 1.文件的新建.删除: 2.文件的复制: 3.获取文件扩展名: 4.文件的重命名: 5.获取某个文件的详细信息: 6.计算某个文件的大小: 7.文件大小的格式化: 8.获取某个路径下的文件列表: 9.获取某个目录下的文件列表: 10.目录的新建.删除; 11.目录的复制: 12.计算某个目录包含的文件数量: 13.计算某个目录包含的文件大小: 代码如下:

  • Qt基础开发之Qt文件操作类QFile读写文件的详细方法与实例及QDataStream的使用方法

    Qt文件操作类QFile简介 Qt中使用QFile类来操作文件的输入/输出.继承至QIODevice,QIODevice类是输入/输出设备的基类, 为设备提供了公共实现和抽象接口用于读写块数据.QIODevice又继承至QObject. 1.使用QFile类打开文件 QFile的构造函数 QFile(const QString &name) //传入一个文件路径 构造完成后,并没有打开文件,需要使用QFile::open函数来打开文件 [virtual] bool QFile::open(Ope

  • Java 动态生成类和实例, 并注入方法操作示例

    本文实例讲述了Java 动态生成类和实例, 并注入方法.分享给大家供大家参考,具体如下: Java官方支持的, 必须要有接口才行 import java.lang.reflect.Constructor; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; import java.util.LinkedList; import ja

  • java日期操作工具类(获取指定日期、日期转换、相隔天数)

    本文实例为大家分享了java日期操作工具类,获取指定日期前一天.后一天:日期转换:两个日期之间相隔天数等工具类,供大家参考,具体内容如下 import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; public class

  • Java使用jdbc连接实现对MySQL增删改查操作的全过程

    目录 1.新建项目 2.添加jar包 3.jdbc的连接 4.简单的MySQL增删改查操作 总结 1.新建项目 新建一个项目,fileànewàproject如下图: 选择Javaà下一步,如下图:(注意如果jdk推荐使用jdk1.8版本哦,如果不是可以在project SDK中更换,Add JDK,找到自己电脑上放JDK1.8的地方,没有的话自行下载哦) 继续下一步 创建项目名字(自己起就行,注意项目名不要大写),找一个存放的地址,也自己决定就行. 2.添加jar包 一般默认位置是在如下位置:

  • Java对象转JSON时动态的增删改查属性详解

    1. 前言 日常开发中少不了JSON处理,少不了需要在JSON中添加额外字段或者删除特定字段的需求.今天我们就使用Jackson类库来实现这个功能. 2. JSON字符串增加额外字段 假如我们有这样结构的JSON: { "username":"felord.cn", "age":18 } 期望增加一个性别字段gender: { "username": "felord.cn", "age"

随机推荐