日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

OSS里的文件怎么全部解凍?

如果未開啟歸檔直讀,歸檔類型的Object需要解凍后才能讀取。OSS控制臺暫不支持批量解凍某個目錄下的文件,解凍時需要逐個找到并執(zhí)行解凍,為減少操作步驟,可以使用其他方式批量對文件進行解凍操作。本文將介紹批量解凍OSS文件的具體方法。

解決方案

要批量解凍OSS里的文件,您需要按照以下步驟操作:

1.在批量解凍文件之前,您首先需要列舉出所有文件。

  • 列舉文件推進您使用存儲空間清單功能,它可以方便且高效的列舉bucket文件,尤其是在海量Object的列舉場景中,具體操作,請參見存儲空間清單

  • 除此之外,您也可以通過使用阿云SDK調(diào)用ListObjects的方法來實現(xiàn)相關(guān)操作,但是相較使用存儲清單來說產(chǎn)生費用會更多,具體信息,請參見列舉文件請求費用

2.篩選清單返回結(jié)果字段中StorageClass類型為歸檔的文件,并記錄這些文件不包含bucket名稱在內(nèi)的完整路徑。

說明

如果您使用的是阿里云SDK方式獲取列表,例如返回清單中單條數(shù)據(jù)定義為"s",獲取參數(shù)KeyStorageClass,以便篩選名稱+狀態(tài)信息,過濾出目標文件路徑清單。參考如下

System.out.println("fileurl"+s.getKey()+"&stu:"+s.getStorageClass());

3.使用對應(yīng)的文件路徑進行批量解凍。你可按照個人技術(shù)棧需求下面3種批量處理方式,具體操作,請參見解凍文件

  • 命令行工具ossutil:整體來看,相較其他兩種方式來說操作更加簡潔且效率相對較高;缺點是需要了解命令行操作。文中以Linux系統(tǒng)為示例,推薦您在熟悉命令行工具及Linux系統(tǒng)操作時使用。

  • 使用REST API:由于沒有批量解凍的接口,使用REST API發(fā)送解凍請求時只能挨個文件執(zhí)行調(diào)用,直接發(fā)起REST API請求需要手動編寫代碼計算簽名,推薦對程序自定義要求較高時使用。

  • 阿里云SDK:操作相對ossutil來說較為繁瑣,但通用性較強,缺點是要使用編譯工具在本機上運行,且需要有一定的代碼閱讀和修改的能力。本文提供了Java示例,如需查看,請查閱下方示例。

Java示例

補充說明

如果您需要使用阿里云SDK批量解凍文件,需要對示例代碼進行部分修改,由于示例代碼只展示單文件解凍操作的相關(guān)流程,在需要批量解凍時,首先將過濾出需要解凍的文件的路徑信息放入一個清單中,用清單替換示例中的objectName參數(shù),之后遞歸進行解凍文件操作即可,具體可參考如下示例:

說明

此示例僅展示Java語言批量解凍歸檔文件相關(guān)操作,如需查看文檔解凍是否完成,請參見如何查看OSS文件解凍是否完成?

如果您需要解凍冷歸檔、深度冷歸檔類型的文件,請?zhí)D(zhuǎn)至SDK簡介,根據(jù)需要使用的編程語言,查詢對應(yīng)語言的解凍文件文檔內(nèi)容。

import com.aliyun.oss.ClientException;
import com.aliyun.oss.OSS;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.OSSException;
import com.aliyun.oss.model.*;

import java.util.ArrayList;
import java.util.List;

public class Demo {
    public static void main(String[] args) throws Exception {
        // Endpoint以華北2(北京)為例,其它Region請按實際情況填寫。
        String endpoint = "oss-cn-beijing.aliyuncs.com";
        // 從環(huán)境變量中獲取訪問憑證。運行本代碼示例之前,請確保已設(shè)置環(huán)境變量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // 填寫B(tài)ucket名稱,例如examplebucket。
        String bucketName = "examplebucket";
        // 創(chuàng)建清單,并添加不包含Bucket名稱在內(nèi)的歸檔類型Object的完整路徑。
        List<String> filePaths = new ArrayList<>();
        filePaths.add("filePath1");
        filePaths.add("filePath2");

        // 創(chuàng)建OSSClient實例。
        OSS ossClient = new OSSClientBuilder().build(endpoint, credentialsProvider);

        try {
            for (String filePath : filePaths) {
                ObjectMetadata objectMetadata = ossClient.getObjectMetadata(bucketName, filePath);
                // 校驗Object是否為歸檔類型Object。
                StorageClass storageClass = objectMetadata.getObjectStorageClass();
                if (storageClass == StorageClass.Archive) {
                    // 解凍Object。
                    ossClient.restoreObject(bucketName, filePath);
                }
                System.out.println(filePath+" start thawing.");
            }
        } catch (OSSException oe) {
            System.out.println("Caught an OSSException, which means your request made it to OSS, "
                    + "but was rejected with an error response for some reason.");
            System.out.println("Error Message:" + oe.getErrorMessage());
            System.out.println("Error Code:" + oe.getErrorCode());
            System.out.println("Request ID:" + oe.getRequestId());
            System.out.println("Host ID:" + oe.getHostId());
        } catch (ClientException ce) {
            System.out.println("Caught an ClientException, which means the client encountered "
                    + "a serious internal problem while trying to communicate with OSS, "
                    + "such as not being able to access the network.");
            System.out.println("Error Message:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
}

相關(guān)文檔