国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

java將指定目錄下的文件復(fù)制到目標(biāo)文件夾

這篇具有很好參考價(jià)值的文章主要介紹了java將指定目錄下的文件復(fù)制到目標(biāo)文件夾。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

技術(shù)介紹

1. 遞歸

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

2. File

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

實(shí)現(xiàn)

首先介紹下幾個(gè)小方法文章來源地址http://www.zghlxwxcb.cn/news/detail-763180.html

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. 拷貝文件到目標(biāo)文件夾

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)) { // 如果是圖片文件,拷貝到目標(biāo)文件夾中
             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 {

    /**
     * 拷貝指定文件到目標(biāo)文件夾
     * @param isRecursion 是否遍歷子文件夾
     * @param source 源文件夾
     * @param target 目標(biāo)文件夾
     * @param mateSuffixs 匹配的文件后綴,如果為空,只要不是文件夾都復(fù)制
     */
    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)建一個(gè)File
     * @param path 路徑
     */
    public static File file(String path){
        return new File(path);
    }

    /**
     * 遞歸查詢文件
     * @param sourceDir 源文件
     * @param destDir 目標(biāo)文件夾
     * @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)) { // 如果是圖片文件,拷貝到目標(biāo)文件夾中
                copy(file,destDir);
            }
        }
    }

    /**
     * 非遞歸查詢文件
     * @param sourceDir 源文件
     * @param destDir 目標(biāo)文件夾
     * @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);
            }
        }
    }

    /**
     * 拷貝文件到目標(biāo)文件夾
     */
    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 如果沒有填,則是文件就復(fù)制
     */
    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("[\\\\/]", "");
    }
}

到了這里,關(guān)于java將指定目錄下的文件復(fù)制到目標(biāo)文件夾的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • java將指定文件夾按照文件目錄壓縮為zip壓縮包

    將指定的壓縮包作為流發(fā)送給瀏覽器 下面粘貼一些沒有用的東西 ,是我自已業(yè)務(wù)的邏輯,,主要邏輯是根據(jù)傳入文件不同 判斷將壓縮包發(fā)送給瀏覽器 還是將xls模板發(fā)送給瀏覽器

    2024年02月16日
    瀏覽(27)
  • bat復(fù)制文件到指定文件夾

    bat復(fù)制文件到指定文件夾

    FOR /F %%N?IN (\\\'DIR /B /S \\\"D:文件夾*.*\\\"\\\') DO (COPY %%N?\\\"E:文件夾\\\") *.*代表所有文件,文件夾除外。 解釋:將D盤文件夾所有文件,復(fù)制到E盤文件夾。 文件名只能,中文數(shù)字英文組合,帶有特殊符號(hào)的無法復(fù)制。 ? ?

    2024年02月13日
    瀏覽(25)
  • C#選定文件復(fù)制到指定文件夾

    搜索到的: string pLocalFilePath =\\\"\\\";//要復(fù)制的文件路徑 string pSaveFilePath =\\\"\\\";//指定存儲(chǔ)的路徑 if (File.Exists(pLocalFilePath))//必須判斷要復(fù)制的文件是否存在 { File.Copy(pLocalFilePath, pSaveFilePath, true);//三個(gè)參數(shù)分別是源文件路徑,存儲(chǔ)路徑,若存儲(chǔ)路徑有相同文件是否替換 } 自己應(yīng)用:

    2023年04月21日
    瀏覽(26)
  • linux 查看文件夾下的文件個(gè)數(shù)(當(dāng)前目錄的文件數(shù))

    linux 查看文件夾下的文件個(gè)數(shù)(當(dāng)前目錄的文件數(shù)) 查看文件夾下的文件個(gè)數(shù)(當(dāng)前目錄的文件數(shù)) 說明: ls -l : 長列表輸出該目錄下文件信息(注意這里的文件,不同于一般的文件,可能是目錄、鏈接、設(shè)備文件等) grep ^- : 這里將長列表輸出信息過濾一部分,只保留一般文件,如

    2024年02月16日
    瀏覽(97)
  • python中針對(duì)同一目錄或不同目錄下的其他文件或文件夾的import用法

    在Python中, import 用于導(dǎo)入其他文件或模塊的內(nèi)容,讓你可以在當(dāng)前文件中使用這些內(nèi)容。下面我將介紹如何使用 import 來導(dǎo)入同一目錄或不同目錄下的文件或文件夾。 1. 導(dǎo)入同一目錄下的文件或模塊: 如果你要導(dǎo)入與當(dāng)前文件位于同一目錄下的文件或模塊,可以直接

    2024年02月14日
    瀏覽(27)
  • C語言讀取文件夾一級(jí)子目錄的指定類型文件

    參考鏈接: C語言讀取指定文件夾下的所有文件(各種信息)_c語言讀取文件夾下的所有文件-CSDN博客? 參考以上文案,做成了幾個(gè)函數(shù),用于讀取任意文件夾下的指定后綴的文件。

    2024年02月21日
    瀏覽(26)
  • Python小技巧【1】——獲取指定文件夾下的所有文件【glob模塊】

    Python小技巧【1】——獲取指定文件夾下的所有文件【glob模塊】

    glob模塊 是Python標(biāo)準(zhǔn)庫中一個(gè)重要的模塊,主要用來 查找符合特定規(guī)則的目錄和文件,并將搜索的到的結(jié)果返回到一個(gè)列表中。 ?1、常用函數(shù)glob() 返回符合匹配條件的所有文件的路徑。 ?2、重要參數(shù)recursive recursive參數(shù) 代表是否遞歸調(diào)用,與特殊通配符 ** 一同使用,默認(rèn)為

    2024年02月04日
    瀏覽(96)
  • Unity Editor 遍歷指定文件夾下的所有prefab

    適用場(chǎng)景: ? ? ? ? ? ? ? ? ?查找指定文件夾下所有的prefab并找到所有引用的圖片及路徑。 步驟分析: ? ? ? ? ? ? ? ? 1、通過guid獲取資源路徑 ? ? ? ? ? ? ? ? 2、獲取文件夾中包含后綴為.prefab的路徑 ? ? ? ? ? ? ? ? 3、編輯器下加載該資源(如果對(duì)資源有編輯的話

    2024年02月04日
    瀏覽(29)
  • Python os.listdir方法(獲取文件夾目錄下的內(nèi)容)

    os.listdir 方法。參數(shù)為文件夾路徑, 可以返回文件夾下的所有子文件、文件名稱, 但不能返回子文件夾下的文件

    2024年02月14日
    瀏覽(95)
  • Unity工程目錄下的文件夾(Assets、Library、Logs、Packages、ProjectSettings、UserSettings)

    Unity工程目錄下的文件夾(Assets、Library、Logs、Packages、ProjectSettings、UserSettings)

    通常Unity里的工程目錄都是這樣: 一、Assets? 工程資源文件夾(美術(shù)資源,腳本等等) ????????Unity工程中所用到的所有Asset資源都放到這個(gè)文件夾里,是資源文件的要目錄,很多API都是基于這個(gè)文件目錄。查找目錄都需要帶上Assets,例如AssetDataBase 二、Library??? 庫文件夾

    2023年04月09日
    瀏覽(48)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包