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

java將指定目錄下文件復制到目標文件夾的幾種小方法

 更新時間:2024年01月18日 16:14:30   作者:澤澤澤json  
在Java中有多種方法可以實現(xiàn)文件的復制,這篇文章主要給大家介紹了關于java將指定目錄下文件復制到目標文件夾的幾種小方法,文中通過代碼介紹的非常詳細,需要的朋友可以參考下

技術介紹

1. 遞歸

  • 遞歸是一種基于函數(shù)調(diào)用自身的方法。它是一種非常常見的計算機編程技術,可以讓程序員通過簡單、優(yōu)雅的方式來解決許多問題。
  • 簡單來說,遞歸是在函數(shù)執(zhí)行過程中調(diào)用自身的過程。當函數(shù)被調(diào)用時,它會先執(zhí)行函數(shù)體內(nèi)的語句,然后再調(diào)用自己,這個過程將會重復執(zhí)行數(shù)次,直到達到某個條件才會終止遞歸調(diào)用。
  • 在編程中,遞歸可以使一些問題的解決方法變得清晰、簡潔。比如樹的遍歷、圖的搜索以及處理嵌套數(shù)據(jù)結構等,都可以通過遞歸來實現(xiàn)。
  • 需要注意的是,如果遞歸沒有正確的終止條件,它將會一直調(diào)用自身,直到程序崩潰。因此,在編寫遞歸函數(shù)時,必須要特別注意控制遞歸的深度。

2. File

  • Java中的File是一個類,它代表著本地文件系統(tǒng)中的文件或目錄。 File類可以用于對文件(或目錄)的創(chuàng)建、刪除、重命名、查詢和修改等操作??梢酝ㄟ^調(diào)用File類的方法實現(xiàn)這些操作。File類也提供了一些便捷的方法來獲取文件的屬性,如文件大小、最后修改時間、是否可讀、是否可寫等屬性。File類的一些常見方法包括:
  • createNewFile() - 創(chuàng)建一個新文件。
  • delete() - 刪除一個文件。
  • exists() - 檢查文件是否存在。
  • isFile() - 檢查文件是否是一個標準文件。
  • isDirectory() - 檢查文件是否是一個目錄。
  • renameTo(newName) - 重命名文件/目錄。
  • 另外,F(xiàn)ile類還提供了一些靜態(tài)方法,如list()、listFiles()等,用于列出指定目錄下的文件和子目錄。而對于文本文件的讀取和寫入操作,則需要使用Java流(InputStream和OutputStream)來處理。

實現(xiàn)

首先介紹下幾個小方法

1. 獲取文件名

public static String getFileSimpleName(File file){
    return  file.getName().replaceAll("[\\\\/]", "");
}

2. 獲取文件的后綴

 public static String getFileType(File file) {
     String fileName = file.getName();
     int dotIndex = fileName.lastIndexOf(".");
     return (dotIndex == -1) ? "" : fileName.substring(dotIndex + 1);
}

3. 拷貝文件到目標文件夾

public static void copy(File sourceFile, String destinationFolder) throws IOException {
    String destinationFilePath = destinationFolder + "/" + getFileSimpleName(sourceFile);
    File file = new File(destinationFilePath);
    if (file.exists()){
        file.delete();
    }
    Files.copy(sourceFile.toPath(), file.toPath());
}

4.遞歸查詢文件

public static void copyFilesRecursion(File sourceDir,String destDir,String...names) throws IOException {
     // 遍歷源文件夾下的所有文件和文件夾
     for (File file : sourceDir.listFiles()) {
         if (file.isDirectory()) { // 如果是文件夾,遞歸調(diào)用 copyImages 函數(shù)
             copyFilesRecursion(file, destDir,names);
         } else if (isMateFile(file,names)) { // 如果是圖片文件,拷貝到目標文件夾中
             copy(file,destDir);
         }
     }
 }

完整代碼

import java.io.File;
import java.io.IOException;
import java.nio.file.FileSystemException;
import java.nio.file.Files;;
import java.util.Arrays;

/**
 * @author zzxjs
 * @since 2023/06/27
 */
public class FileCopy {

    /**
     * 拷貝指定文件到目標文件夾
     * @param isRecursion 是否遍歷子文件夾
     * @param source 源文件夾
     * @param target 目標文件夾
     * @param mateSuffixs 匹配的文件后綴,如果為空,只要不是文件夾都復制
     */
    public static void copyFile(boolean isRecursion,String source,String target,String...mateSuffixs) throws Exception {
        File sourceFile;
        if (!(sourceFile = file(source)).isDirectory()){
            throw new FileSystemException("source not directory");
        }
        File targetFile = file(target);
        //文件夾如果不存在則創(chuàng)建,存在則判斷是否是目錄
        if (targetFile.exists()){
            if (!targetFile.isDirectory()){
                throw new FileSystemException("target not directory");
            }
        }else{
            targetFile.mkdirs();
        }
        if (isRecursion){
            copyFilesRecursion(sourceFile,target,mateSuffixs);
        }else {
            copyFiles(sourceFile,target,mateSuffixs);
        }
    }

    /**
     * 創(chuàng)建一個File
     * @param path 路徑
     */
    public static File file(String path){
        return new File(path);
    }

    /**
     * 遞歸查詢文件
     * @param sourceDir 源文件
     * @param destDir 目標文件夾
     * @param names 匹配的后綴名
     */
    public static void copyFilesRecursion(File sourceDir,String destDir,String...names) throws IOException {
        // 遍歷源文件夾下的所有文件和文件夾
        for (File file : sourceDir.listFiles()) {
            if (file.isDirectory()) { // 如果是文件夾,遞歸調(diào)用 copyImages 函數(shù)
                copyFilesRecursion(file, destDir,names);
            } else if (isMateFile(file,names)) { // 如果是圖片文件,拷貝到目標文件夾中
                copy(file,destDir);
            }
        }
    }

    /**
     * 非遞歸查詢文件
     * @param sourceDir 源文件
     * @param destDir 目標文件夾
     * @param names 匹配的后綴名
     */
    public static void copyFiles(File sourceDir,String destDir,String...names) throws IOException {
        // 遍歷源文件夾下的所有文件和文件夾
        for (File file : sourceDir.listFiles()) {
            if (file.isFile() && isMateFile(sourceDir,names)) {
                copy(file,destDir);
            }
        }
    }

    /**
     * 拷貝文件到目標文件夾
     */
    public static void copy(File sourceFile, String destinationFolder) throws IOException {
        String destinationFilePath = destinationFolder + "/" + getFileSimpleName(sourceFile);
        File file = new File(destinationFilePath);
        if (file.exists()){
            file.delete();
        }
        Files.copy(sourceFile.toPath(), file.toPath());
    }

    /**
     * 判斷文件名是否匹配
     * @param file 文件
     * @param names 需要匹配的后綴 png、doc、ppt
     * @return 如果沒有填,則是文件就復制
     */
    public static boolean isMateFile(File file,String...names) {
        if (names == null || names.length == 0){
            return true;
        }
        return Arrays.asList(names).contains(getFileType(file).toLowerCase());
    }

    /**
     * 獲取文件的后綴
     * @param file 文件  Z:\jiayi\postpartum\images\doduo.zip
     * @return zip
     */
    public static String getFileType(File file) {
        String fileName = file.getName();
        int dotIndex = fileName.lastIndexOf(".");
        return (dotIndex == -1) ? "" : fileName.substring(dotIndex + 1);
    }

    /**
     * 獲取文件名
     * @param file  Z:\jiayi\postpartum\images\doduo.zip
     * @return doudou.zip
     */
    public static String getFileSimpleName(File file){
        return  file.getName().replaceAll("[\\\\/]", "");
    }
}

總結 

到此這篇關于java將指定目錄下文件復制到目標文件夾的文章就介紹到這了,更多相關java指定文件復制到目標文件夾內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 簡述Java異步上傳文件的三種方式

    簡述Java異步上傳文件的三種方式

    這篇文章主要為大家詳細介紹了Java異步上傳文件的三種方式,感興趣的小伙伴們可以參考一下
    2016-03-03
  • Spring根據(jù)XML配置文件 p名稱空間注入屬性的實例

    Spring根據(jù)XML配置文件 p名稱空間注入屬性的實例

    下面小編就為大家分享一篇Spring根據(jù)XML配置文件 p名稱空間注入屬性的實例,具有很好的參考價值。希望對大家有所幫助
    2017-11-11
  • java中對象的序列化與反序列化深入講解

    java中對象的序列化與反序列化深入講解

    這篇文章主要給大家介紹了關于java中對象的序列化與反序列化的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-09-09
  • JavaSE系列基礎包裝類及日歷類詳解

    JavaSE系列基礎包裝類及日歷類詳解

    這篇文章主要介紹的是JavaSE中常用的基礎包裝類以及日歷類的使用詳解,文中的示例代碼簡潔易懂,對我們學習JavaSE有一定的幫助,感興趣的小伙伴快來跟隨小編一起學習吧
    2021-12-12
  • java面向?qū)ο笤O計原則之合成復用原則示例詳解

    java面向?qū)ο笤O計原則之合成復用原則示例詳解

    這篇文章主要介紹了java面向?qū)ο笤O計原則之合成復用原則的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2021-10-10
  • Springcloud eureka搭建高可用集群過程圖解

    Springcloud eureka搭建高可用集群過程圖解

    這篇文章主要介紹了Springcloud eureka搭建高可用集群過程圖解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-04-04
  • 從零開始Mybatis連接數(shù)據(jù)庫的方法

    從零開始Mybatis連接數(shù)據(jù)庫的方法

    這篇文章主要介紹了Mybatis連接數(shù)據(jù)庫的方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-02-02
  • java圖像識別工具類(ImageRecognitionUtils)使用實例詳解

    java圖像識別工具類(ImageRecognitionUtils)使用實例詳解

    這篇文章主要介紹了如何在Java中使用OpenCV進行圖像識別,包括圖像加載、預處理、分類、人臉檢測和特征提取等步驟,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2025-01-01
  • 基于springboot實現(xiàn)文件上傳

    基于springboot實現(xiàn)文件上傳

    這篇文章主要為大家詳細介紹了基于springboot實現(xiàn)文件上傳,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • java equals函數(shù)用法詳解

    java equals函數(shù)用法詳解

    java 中equals函數(shù)的使用方法是廣大java愛好者所關心的一個話題,本文將詳細介紹其使用方法,需要了解的朋友可以參考下
    2012-11-11

最新評論