欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java文件操作工具類fileUtil實例【文件增刪改,復(fù)制等】

 更新時間:2017年10月30日 11:41:28   作者:lovoo  
這篇文章主要介紹了Java文件操作工具類fileUtil,結(jié)合實例形式分析了java針對文件進(jìn)行讀取、增加、刪除、修改、復(fù)制等操作的相關(guān)實現(xiàn)技巧,需要的朋友可以參考下

本文實例講述了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 {
  /**
   * 讀取文件內(nèi)容
   *
   * @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();
  }
  /**
   * 創(chuàng)建指定的目錄。 如果指定的目錄的父目錄不存在則創(chuàng)建其目錄書上所有需要的父目錄。
   * 注意:可能會在返回false的時候創(chuàng)建部分父目錄。
   *
   * @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格式的路徑轉(zhuǎn)換為UNIX/Linux格式的路徑。
   *
   * @param filePath
   * @return
   */
  public static String toUNIXpath(String filePath) {
    return filePath.replace("", "/");
  }
  /**
   * 從文件名得到UNIX風(fēng)格的文件絕對路徑。
   *
   * @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);
    }
  }
  /**
   * 得到文件名中的父路徑部分。 對兩種路徑分隔符都有效。 不存在時返回""。
   * 如果文件名是以路徑分隔符結(jié)尾的則不考慮該分隔符,例如"/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);
    }
  }
  /**
   * 得到路徑分隔符在文件路徑中最后出現(xiàn)的位置。 對于DOS或者UNIX風(fēng)格的分隔符都可以。
   *
   * @param fileName
   * @return
   */
  public static int getPathLastIndex(String fileName) {
    int point = fileName.lastIndexOf("/");
    if (point == -1) {
      point = fileName.lastIndexOf("");
    }
    return point;
  }
  /**
   * 得到路徑分隔符在文件路徑中指定位置前最后出現(xiàn)的位置。 對于DOS或者UNIX風(fēng)格的分隔符都可以。
   *
   * @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;
  }
  /**
   * 得到路徑分隔符在文件路徑中首次出現(xiàn)的位置。 對于DOS或者UNIX風(fēng)格的分隔符都可以。
   *
   * @param fileName
   * @return
   */
  public static int getPathIndex(String fileName) {
    int point = fileName.indexOf("/");
    if (point == -1) {
      point = fileName.indexOf("");
    }
    return point;
  }
  /**
   * 得到路徑分隔符在文件路徑中指定位置后首次出現(xiàn)的位置。 對于DOS或者UNIX風(fēng)格的分隔符都可以。
   *
   * @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;
    }
  }
  /**
   * 得到相對路徑。 文件名不是目錄名的子節(jié)點時返回文件名。
   *
   * @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();
  }
  /**
   * 復(fù)制文件
   *
   * @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;
      }
    }
  }
  /**
   * @復(fù)制文件,支持把源文件內(nèi)容追加到目標(biāo)文件末尾
   * @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;
      }
    }
  }
}

更多關(guān)于java算法相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java文件與目錄操作技巧匯總》、《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點技巧總結(jié)》和《Java緩存操作技巧匯總

希望本文所述對大家java程序設(shè)計有所幫助。

相關(guān)文章

  • Java線程優(yōu)先級變量及功能

    Java線程優(yōu)先級變量及功能

    這篇文章主要介紹了Java線程優(yōu)先級變量及功能,關(guān)于優(yōu)先級的問可能有兩個或更多線程被分配了相同的優(yōu)先級,那么它們的執(zhí)行取決于操作系統(tǒng),更多相關(guān)介紹,需要的小伙伴可以參考一下
    2022-06-06
  • 全面解析SpringBoot配置文件

    全面解析SpringBoot配置文件

    這篇文章主要為大家全面的解析SpringBoot-配置文件,文中附含詳細(xì)的圖文示例代碼,以便同學(xué)們能更好的理解,有需要的同學(xué)可以借鑒參考下
    2021-09-09
  • 如何使用eclipse搭建maven多module項目(構(gòu)建父子項目)

    如何使用eclipse搭建maven多module項目(構(gòu)建父子項目)

    這篇文章主要介紹了如何使用eclipse搭建maven多module項目(構(gòu)建父子項目) ,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • Java Socket編程實現(xiàn)簡單的問候服務(wù)

    Java Socket編程實現(xiàn)簡單的問候服務(wù)

    這篇文章主要為大家介紹了Java Socket編程實現(xiàn)簡單的問候服務(wù),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-01-01
  • 五分鐘教你手寫 SpringBoot 本地事務(wù)管理實現(xiàn)

    五分鐘教你手寫 SpringBoot 本地事務(wù)管理實現(xiàn)

    這篇文章主要介紹了五分鐘教你手寫 SpringBoot 本地事務(wù)管理實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • java 題解LeetCode38外觀數(shù)列示例

    java 題解LeetCode38外觀數(shù)列示例

    這篇文章主要為大家介紹了java 題解LeetCode38外觀數(shù)列示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • Java實現(xiàn)消消樂中的消除功能

    Java實現(xiàn)消消樂中的消除功能

    這篇文章主要為大家詳細(xì)介紹了Java實現(xiàn)消消樂中的消除功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • 2020新版idea創(chuàng)建項目沒有javaEE 沒有Web選項的完美解決方法

    2020新版idea創(chuàng)建項目沒有javaEE 沒有Web選項的完美解決方法

    這篇文章主要介紹了2020新版idea創(chuàng)建項目沒有javaEE 沒有Web選項的完美解決方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-09-09
  • Java設(shè)計模式中的適配器模式

    Java設(shè)計模式中的適配器模式

    這篇文章主要介紹了Java設(shè)計模式中的適配器模式, 適配器模式是將一個類的接口適配成用戶所期待的,一個適配允許通常因為接口不兼容而不能在一起工作的類工作在一起,做法是將類自己的接口包裹在一個已存在的類中,需要的朋友可以參考下
    2024-01-01
  • Mybatis如何實現(xiàn)InsertOrUpdate功能

    Mybatis如何實現(xiàn)InsertOrUpdate功能

    這篇文章主要介紹了Mybatis如何實現(xiàn)InsertOrUpdate功能,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05

最新評論