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

java獲取文件夾下所有的文件

這篇具有很好參考價值的文章主要介紹了java獲取文件夾下所有的文件。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

對于一個嵌套的目錄,獲取目錄下所有的文件,可以使用以下兩種方式:

1. 通過遞歸獲取

File類提供了如下兩個方法:

  1. file.list():返回目錄下文件和子目錄名;(不會遞歸)
  2. file.listFiles():返回目錄下文件和子目錄File對象;(不會遞歸)
/**
     * 得到文件名稱
     *
     * @param path 路徑
     * @return {@link List}<{@link String}>
     */
    private List<String> getFileNames(String path) {
        File file = new File(path);
        if (!file.exists()) {
            return null;
        }
        List<String> fileNames = new ArrayList<>();
        return getFileNames(file, fileNames);
    }

/**
     * 得到文件名稱
     *
     * @param file      文件
     * @param fileNames 文件名
     * @return {@link List}<{@link String}>
     */
    private List<String> getFileNames(File file, List<String> fileNames) {
        File[] files = file.listFiles();
        for (File f : files) {
            if (f.isDirectory()) {
                getFileNames(f, fileNames);
            } else {
                fileNames.add(f.getName());
            }
        }
        return fileNames;
    }

例子中List只是存放了文件夾下所有的文件名,可以根據(jù)需求修改List中存放的元素屬性。比如可以直接將File對象存入。

2. 使用Files.walk()方法
在jdk8中,可以使用walk方法遞歸的去查找目錄下所有文件。

		// 路徑
        String path = "D:\\xxx";
		try (Stream<Path> paths = Files.walk(Paths.get(path))){
            List<Path> fileNames = paths
                    .filter(Files::isRegularFile)
                    .collect(Collectors.toList());
        } catch (IOException e) {
            e.printStackTrace();
        }

walk方法會自動遞歸子目錄。
上例使用了Try with Resources模式,它可以確保無論在什么情況下,流都將關(guān)閉。
解釋:
如果try塊和finally塊中的方法都拋出異常那么try塊中的異常會被抑制(suppress),只會拋出finally中的異常,而把try塊的異常完全忽略。而try-with-resources語句能夠幫你自動調(diào)用資源的close()函數(shù)關(guān)閉資源不用到finally塊。

walk方法解釋:

通過遍歷以給定起始文件為根的文件樹,返回一個用 Path 惰性填充的 Stream。文件樹是深度優(yōu)先遍歷的,流中的元素是 Path 對象,就好像通過解析相對路徑來獲得的一樣。此方法的工作方式就像調(diào)用它等同于評估表達(dá)式: walk(start, Integer.MAX_VALUE, options) 換句話說,它訪問文件樹的所有級別。返回的流封裝了一個或多個 DirectoryStream。如果需要及時處理文件系統(tǒng)資源,則應(yīng)使用 try-with-resources 構(gòu)造來確保在流操作完成后調(diào)用流的 close 方法。對關(guān)閉的流進(jìn)行操作將導(dǎo)致 illegalStateException。

illegalStateException是無效狀態(tài)異常。表示當(dāng)前對客戶端的響應(yīng)已經(jīng)結(jié)束,不能在響應(yīng)已經(jīng)結(jié)束(或說消亡)后再向客戶端(實(shí)際上是緩沖區(qū))輸出任何內(nèi)容。
一般來說無效狀態(tài)異常是因?yàn)榕e了調(diào)用一個方法的流程,
例如:比如在JSP/Servlet編程中,服務(wù)器已經(jīng)開始把數(shù)據(jù)發(fā)客戶端了,卻想改動字符集encoding參數(shù),這個就是錯誤,因?yàn)殚_始復(fù)數(shù)據(jù)到客戶端后就不能再修改任何Http header內(nèi)容,它們已經(jīng)發(fā)出去了,無法再修改了。

maxDepth參數(shù),設(shè)置要遞歸的深度;Files.walk(Paths.get(path),2)
默認(rèn)不會自動跟隨符號鏈接, 設(shè)置options參數(shù)FOLLOW_LINKS選項,則遵循符號鏈接。 Files.walk(Paths.get(path),FileVisitOption.FOLLOW_LINKS)

示例:

	String path = "D:\\xxx";
	
	//過濾出目錄
	try (Stream<Path> paths = Files.walk(Paths.get(dirName))) {
	    paths.filter(Files::isDirectory)
	            .forEach(System.out::println);
	}
 
	//按后綴名過濾
	try (Stream<Path> paths = Files.walk(Paths.get(dirName), 2)) {
	    paths.map(path -> path.toString()).filter(f -> f.endsWith(".png"))
	            .forEach(System.out::println);
	}

需求:傳進(jìn)來上傳的文件名通過","分割,檢查文件夾中是否存在,不存在返回缺失的文件名
代碼:文章來源地址http://www.zghlxwxcb.cn/news/detail-468016.html

/**
     * 校驗(yàn)文件
     *
     * @param data  文件名數(shù)據(jù)
     * @return {@link String}
     */
    @Override
    public String validationFile(String data) {
        List<String> fileNames = new ArrayList<>();
        try (Stream<Path> paths = Files.walk(Paths.get(path))) {
            fileNames = paths
                    .filter(Files::isRegularFile)
                    .map(file -> file.getFileName().toString())
                    .collect(Collectors.toList());
        } catch (IOException e) {
            e.printStackTrace();
        }
        //傳進(jìn)來的files
        String[] fileNameArr = data.split(",");
        List<String> missingFile = new ArrayList<>();
        for (String s : fileNameArr) {
            if (!fileNames.contains(s)) {
                missingFile.add(s);
            }
        }
        if (missingFile.size() == 0) {
            return "1";
        }
        return String.join(",", missingFile);
    }

到了這里,關(guān)于java獲取文件夾下所有的文件的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • python獲取文件夾下所有文件

    python獲取文件夾下所有文件,大家肯定都會想到os.listdir了,但是這種方法只能夠獲取到當(dāng)前文件夾中的所有文件/文件夾,如果我想獲得文件夾-文件夾-文件呢? 我的需求是只要文件夾中所有非文件夾,換句話來說對于我們的需求只有文件夾和非文件夾兩種情況,那么直接聯(lián)

    2024年02月12日
    瀏覽(24)
  • 如何用python獲取單個文件 或 文件夾中所有文件的行數(shù)

    如何用python獲取單個文件 或 文件夾中所有文件的行數(shù)

    本例展示獲取單個txt文件中的行數(shù): 本例展示獲取labels下的所有txt文件內(nèi)容的總行數(shù): 函數(shù)解釋 os.walk()是一種遍歷目錄數(shù)的函數(shù),機(jī)理類似深度優(yōu)先搜索和層次搜索策略,其返回的是 root dirs files 返回值解釋 root :代表當(dāng)前遍歷的目錄路徑,string類型 dirs :代表root路徑下的

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

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

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

    2024年02月04日
    瀏覽(96)
  • PowerShell 獲取某目錄下所有的文件、文件夾,同時對獲取到的文件路徑字符串進(jìn)行替換處理

    前言: 為了將Windows系統(tǒng)下的Java編譯文件與linux服務(wù)器上的文件進(jìn)行比較,故進(jìn)行此文件路徑的獲取及路徑處理。 在只有文件路徑 而沒有實(shí)際文件的情況下的比較。 代碼如下: 輸出文件(grepKekka.csv): 輸出文件(grepKekka1.csv): 輸出文件(grepKekka2.csv): 結(jié)語: 為了將

    2024年02月13日
    瀏覽(96)
  • 【java】刪除文件夾及文件夾中的所有文件

    刪除指定文件夾及文件夾中的所有文件。 JDK 1.8 在JDK 8中,可以使用java.nio.file.Files和java.nio.file.Path類來刪除一個文件夾及其中的所有文件和子文件夾。具體代碼如下所示: 在上述代碼中,請將 your-directory-path 替換為要刪除的目錄路徑。程序首先檢查指定路徑是否是一個目錄,

    2024年02月11日
    瀏覽(28)
  • c# 通過現(xiàn)在文件夾,獲取下面所有的照片,并對其進(jìn)行統(tǒng)一尺寸裁剪

    c# 通過現(xiàn)在文件夾,獲取下面所有的照片,并對其進(jìn)行統(tǒng)一尺寸裁剪 using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Drawing.Imaging; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using Syst

    2023年04月26日
    瀏覽(29)
  • java 在文件夾以及子文件夾中遍歷獲取指定文件的list

    1.? 使用java 遞歸方法獲取指定文件的list,相當(dāng)于在一個文件夾以及子文件夾,搜索文件的功能。 直接上代碼:?

    2024年02月13日
    瀏覽(22)
  • 【java】如何獲取整個文件夾的文件名稱

    需求 有時候我們需要一個文件夾里的所有文件的名稱我們只能截圖,然后再使用微信提取出其中的文字,這樣是比較麻煩的,今天給大家介紹使用java提取所有文件的名字,代碼如下:

    2024年02月14日
    瀏覽(90)
  • java項目中獲取resources文件夾下文件

    java項目中獲取resources文件夾下文件

    方法一 獲取到文件的流 方法二 直接獲取路徑 以上方法在服務(wù)器當(dāng)中是否能獲取到還未測試,公司要做個下載word文檔功能,需要使用模板,于是測試了一下本地,后續(xù)將繼續(xù)更新使用easypoi如何下載word文檔 方法三 (重要) SpringBoot中所有文件都在jar包中,沒有一個實(shí)際的路徑,因此

    2024年02月12日
    瀏覽(15)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包