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

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

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

1、引入依賴

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

2、方法

/**
	 * 刪除指定前綴或目錄下的多個文件
	 *
	 * @param prefix 刪除目錄
	 */
	public void deletePathFileList(String prefix) {
		OSS ossClient = null;
		try {
            //封裝創(chuàng)建Oss實例
			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("阿里云刪除指定前綴或目錄下的多個文件異常:{}", e.getMessage());
		} finally {
			if (ossClient != null) {
				ossClient.shutdown();
			}
		}
	}

3、方法補充

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

1.使用FileUtils類

來自 Apache Commons IO的FileUtils類提供了幾個方便的文件操作實用程序。您可以使用該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()方法刪除一個目錄和所有子目錄。

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);
    }
}

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

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實現(xiàn)刪除指定目錄下的所有文件的文章就介紹到這了,更多相關(guān)Java刪除指定目錄下文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • JPA之EntityManager踩坑及解決:更改PersistenceContext

    JPA之EntityManager踩坑及解決:更改PersistenceContext

    這篇文章主要介紹了JPA之EntityManager踩坑及解決:更改PersistenceContext方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • 詳解Java類庫的概念以及import的使用方法

    詳解Java類庫的概念以及import的使用方法

    這篇文章主要介紹了詳解Java類庫的概念以及import的使用方法,是Java入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-09-09
  • Arrays.sort如何實現(xiàn)降序排序

    Arrays.sort如何實現(xiàn)降序排序

    這篇文章主要介紹了Arrays.sort如何實現(xiàn)降序排序問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • 淺談Springboot2.0防止XSS攻擊的幾種方式

    淺談Springboot2.0防止XSS攻擊的幾種方式

    本文主要介紹了Springboot2.0防止XSS攻擊的幾種方式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • Java實現(xiàn)分布式系統(tǒng)限流

    Java實現(xiàn)分布式系統(tǒng)限流

    這篇文章主要為大家詳細(xì)介紹了Java實現(xiàn)分布式系統(tǒng)限流,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • Java?ConcurrentHashMap的源碼分析詳解

    Java?ConcurrentHashMap的源碼分析詳解

    ConcurrentHashMap(CHM)是日常開發(fā)中使用頻率非常高的一種數(shù)據(jù)結(jié)構(gòu),想對于普通的HashMap,CHM提供了線程安全的讀寫,CHM里面使用了許多比較精妙的優(yōu)化&操作。本文主要對CHM的整體結(jié)構(gòu)、初始化,查找,插入等做分析
    2023-03-03
  • SpringBoot整合mybatis常見問題(小結(jié))

    SpringBoot整合mybatis常見問題(小結(jié))

    這篇文章主要介紹了SpringBoot整合mybatis常見問題(小結(jié)),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • java實現(xiàn)文件上傳和下載

    java實現(xiàn)文件上傳和下載

    這篇文章主要為大家詳細(xì)介紹了java實現(xiàn)文件上傳和下載,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • datax-web在windows環(huán)境idea中模塊化打包部署操作步驟

    datax-web在windows環(huán)境idea中模塊化打包部署操作步驟

    這篇文章主要介紹了datax-web在windows環(huán)境idea中模塊化打包部署操作步驟,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-05-05
  • Java在web頁面上的編碼解碼處理及中文URL亂碼解決

    Java在web頁面上的編碼解碼處理及中文URL亂碼解決

    這篇文章主要介紹了Java在web頁面上的編碼解碼處理及中文URL亂碼解決,文中所介紹的兩種使用過濾器解決中文鏈接亂碼的方法非常有效,需要的朋友可以參考下
    2016-02-02

最新評論