最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java調(diào)用Oss JDk實(shí)現(xiàn)刪除指定目錄下的所有文件

 更新時(shí)間:2025年03月18日 09:10:26   作者:APP 肖提莫  
這篇文章主要為大家詳細(xì)介紹了Java如何調(diào)用Oss JDk實(shí)現(xiàn)刪除指定目錄下的所有文件功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下

1、引入依賴

<dependency>
    <groupId>com.aliyun.oss</groupId>
    <artifactId>aliyun-sdk-oss</artifactId>
    <version>3.16.1</version>
</dependency>

2、方法

/**
	 * 刪除指定前綴或目錄下的多個(gè)文件
	 *
	 * @param prefix 刪除目錄
	 */
	public void deletePathFileList(String prefix) {
		OSS ossClient = null;
		try {
            //封裝創(chuàng)建Oss實(shí)例
			CredentialsProvider credentialsProvider = new DefaultCredentialProvider(access_key, secret_key);
			ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
			clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
			ossClient = OSSClientBuilder.create().endpoint(endpoint).credentialsProvider(credentialsProvider).clientConfiguration(clientBuilderConfiguration).region(region).build();
            // 列舉所有包含指定前綴的文件并刪除。
			String nextMarker = null;
			ObjectListing objectListing;
			do {
				ListObjectsRequest listObjectsRequest = new ListObjectsRequest(bucket).withPrefix(prefix).withMarker(nextMarker);
 
				objectListing = ossClient.listObjects(listObjectsRequest);
				if (!objectListing.getObjectSummaries().isEmpty()) {
					List<String> keys = new ArrayList<>();
					for (OSSObjectSummary s : objectListing.getObjectSummaries()) {
						keys.add(s.getKey());
					}
					DeleteObjectsRequest deleteObjectsRequest = new DeleteObjectsRequest(bucket).withKeys(keys).withEncodingType("url");
					DeleteObjectsResult deleteObjectsResult = ossClient.deleteObjects(deleteObjectsRequest);
					List<String> deletedObjects = deleteObjectsResult.getDeletedObjects();
					for (String obj : deletedObjects) {
						String deleteObj = URLDecoder.decode(obj, "UTF-8");
						System.out.println(deleteObj);
					}
				}
				nextMarker = objectListing.getNextMarker();
			} while (objectListing.isTruncated());
		} catch (Exception e) {
			log.error("阿里云刪除指定前綴或目錄下的多個(gè)文件異常:{}", e.getMessage());
		} finally {
			if (ossClient != null) {
				ossClient.shutdown();
			}
		}
	}

3、方法補(bǔ)充

下面小編為大家整理了Java刪除文件的所有方法,有需要的可以參考下

1.使用FileUtils類(lèi)

來(lái)自 Apache Commons IO的FileUtils類(lèi)提供了幾個(gè)方便的文件操作實(shí)用程序。您可以使用該FileUtils.cleanDirectory()方法遞歸刪除目錄中的所有文件和子目錄,而不刪除目錄本身。

import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.IOException; 
public class Main {
    public static void main(String[] args) throws IOException {
        File directory = new File("/path/to/dir");
        FileUtils.cleanDirectory(directory);
    }
}

要遞歸刪除目錄及其中的所有內(nèi)容,您可以使用該FileUtils.deleteDirectory()方法。

import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.IOException; 
public class Main {
    public static void main(String[] args) throws IOException {
        File directory = new File("/path/to/dir");
        FileUtils.deleteDirectory(directory);
    }
}

或者,您可以使用該FileUtils.forceDelete()方法刪除一個(gè)目錄和所有子目錄。

import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.IOException;
public class Main {
    public static void main(String[] args) throws IOException {
        File directory = new File("/path/to/dir");
        FileUtils.forceDelete(directory);
    }
}

2.使用File.delete()方法

該File.delete()方法刪除由指定路徑名表示的文件或目錄。有許多方法可以有條件地刪除使用它的目錄中的文件和子目錄。

例如,以下解決方案僅刪除主目錄中的文件,所有子目錄保持不變。

import java.io.File;
import java.util.Objects; 
public class Main {
    public static void main(String[] args) {
        File directory = new File("/path/to/dir"); 
        for (File file: Objects.requireNonNull(directory.listFiles())) {
            if (!file.isDirectory()) {
                file.delete();
            }
        }
    }
}

如果您使用 Java 8 或更高版本,則可以使用:

import java.io.File;
import java.util.Arrays;
import java.util.Objects;
import java.util.function.Predicate; 
public class Main {
    public static void deleteDirectory(File directory) {
        Arrays.stream(Objects.requireNonNull(directory.listFiles()))
                .filter(Predicate.not(File::isDirectory))
                .forEach(File::delete);
    } 
    public static void main(String[] args) {
        File directory = new File("/path/to/dir");
        deleteDirectory(directory);
    }
}

您可以輕松擴(kuò)展解決方案以遞歸刪除目錄中的所有文件和子目錄。請(qǐng)注意,F(xiàn)ile.delete()當(dāng)且僅當(dāng)目錄為空時(shí),您可以使用該方法刪除目錄。

import java.io.File;
import java.util.Objects; 
public class Main {
    public static void deleteDirectory(File directory) {
        for (File file: Objects.requireNonNull(directory.listFiles())) {
            if (file.isDirectory()) {
                deleteDirectory(file);
            } else {
                file.delete();
            }
        }
    } 
    public static void main(String[] args) {
        File directory = new File("/path/to/dir");
        deleteDirectory(directory);
    }
}

這是使用 Stream API 的版本。它利用該Files.walk()方法并刪除目錄中的所有文件和子目錄以及目錄本身。

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Comparator; 
public class Main {
    public static void deleteDirectory(Path directory) throws IOException {
        Files.walk(directory)
                .sorted(Comparator.reverseOrder())
                .map(Path::toFile)
                .forEach(File::delete);
    } 
    public static void main(String[] args) throws IOException {
        Path directory = Path.of("/path/to/dir");
        deleteDirectory(directory);
    }
}

如果您需要從目錄及其所有子目錄中刪除“僅文件”,您可以執(zhí)行以下操作:

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path; 
public class Main {
    public static void deleteDirectory(File directory) throws IOException {
        Files.walk(directory.toPath())
                .filter(Files::isRegularFile)
                .map(Path::toFile)
                .forEach(File::delete);
    } 
    public static void main(String[] args) throws IOException {
        File directory = new File("/path/to/dir");
        deleteDirectory(directory);
    }
}

到此這篇關(guān)于Java調(diào)用Oss JDk實(shí)現(xiàn)刪除指定目錄下的所有文件的文章就介紹到這了,更多相關(guān)Java刪除指定目錄下文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MyBatis-Plus動(dòng)態(tài)表名使用selectPage方法不生效問(wèn)題解析與解決方案

    MyBatis-Plus動(dòng)態(tài)表名使用selectPage方法不生效問(wèn)題解析與解決方案

    MyBatis-Plus是MyBatis的增強(qiáng)工具,動(dòng)態(tài)表名是MyBatis-Plus的一個(gè)重要功能之一,一些開(kāi)發(fā)者在使用selectPage方法時(shí)可能會(huì)遇到動(dòng)態(tài)表名不生效的問(wèn)題,本文將深入分析這個(gè)問(wèn)題的原因,并提供相應(yīng)的解決方案,需要的朋友可以參考下
    2023-12-12
  • 詳解如何開(kāi)發(fā)一個(gè)MyBatis通用Mapper的輪子

    詳解如何開(kāi)發(fā)一個(gè)MyBatis通用Mapper的輪子

    因?yàn)橐恍┰?,例如:通用?shù)據(jù)權(quán)限控制、MyBatis-Plus好像不支持聯(lián)合主鍵等,我們不得不開(kāi)發(fā)一個(gè)MyBatis通用Mapper的輪子。文中的示例代碼講解詳細(xì),需要的可以參考一下
    2022-12-12
  • java利用遞歸實(shí)現(xiàn)類(lèi)別樹(shù)示例代碼

    java利用遞歸實(shí)現(xiàn)類(lèi)別樹(shù)示例代碼

    這篇文章主要給大家介紹了關(guān)于java利用遞歸實(shí)現(xiàn)類(lèi)別樹(shù)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • CCF考試試題之門(mén)禁系統(tǒng)java解題代碼

    CCF考試試題之門(mén)禁系統(tǒng)java解題代碼

    這篇文章主要為大家詳細(xì)介紹了CCF考試試題之門(mén)禁系統(tǒng)java解題代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • 一篇文章帶你入門(mén)Java接口

    一篇文章帶你入門(mén)Java接口

    這篇文章主要介紹了JAVA中接口的定義和接口的實(shí)現(xiàn),文中講解非常細(xì)致,配合代碼更好的幫大家學(xué)習(xí)參考,感興趣的朋友可以了解下
    2021-08-08
  • Springboot之idea之pom文件圖標(biāo)不對(duì)問(wèn)題

    Springboot之idea之pom文件圖標(biāo)不對(duì)問(wèn)題

    這篇文章主要介紹了Springboot之idea之pom文件圖標(biāo)不對(duì)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • Java完美實(shí)現(xiàn)2048小游戲

    Java完美實(shí)現(xiàn)2048小游戲

    本文給大家分享的是一則根據(jù)網(wǎng)友的代碼改編的2048小游戲的源碼,個(gè)人認(rèn)為已經(jīng)非常完美了,推薦給大家,有需要的小伙伴可以參考下。
    2015-03-03
  • Kotlin + Retrofit + RxJava簡(jiǎn)單封裝使用詳解

    Kotlin + Retrofit + RxJava簡(jiǎn)單封裝使用詳解

    這篇文章主要介紹了Kotlin + Retrofit + RxJava簡(jiǎn)單封裝使用詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07
  • Java中Thread類(lèi)的使用和它的屬性

    Java中Thread類(lèi)的使用和它的屬性

    在java中可以進(jìn)行多線程編程,在java標(biāo)準(zhǔn)庫(kù)中提供了一個(gè)Thread類(lèi),來(lái)表示線程操作,本文主要介紹了Java中Thread類(lèi)的使用和它的屬性,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • SpringMVC中@Valid不起效BindingResult讀取不到Error信息

    SpringMVC中@Valid不起效BindingResult讀取不到Error信息

    在寫(xiě)SpringMVC項(xiàng)目時(shí),由于要對(duì)表單數(shù)據(jù)進(jìn)行校驗(yàn),需要使用@Valid進(jìn)行校驗(yàn),但是在進(jìn)行數(shù)據(jù)校驗(yàn)時(shí),BindingResult對(duì)象無(wú)法攔截非法表單數(shù)據(jù),result.hasErrors()無(wú)論怎么輸入都會(huì)返回false,本文詳細(xì)的介紹一下解決方法
    2021-09-09

最新評(píng)論

炉霍县| 安义县| 玛沁县| 青田县| 永济市| 云梦县| 蓬莱市| 文山县| 讷河市| 敦化市| 丰县| 温州市| 沁源县| 大英县| 宣城市| 霍林郭勒市| 沅江市| 蓬莱市| 固原市| 德保县| 同仁县| 五台县| 福州市| 宜城市| 新建县| 桦南县| 福安市| 九江市| 海林市| 和林格尔县| 邵阳县| 东丰县| 万全县| 阳泉市| 阿图什市| 盘锦市| 大同县| 镇安县| 巨鹿县| 湟源县| 九江县|