删除旧的天蓝色斑点

问题描述 投票:0回答:1

我想使用以下方法删除30天的Blob。但是,似乎“ sourceBlob.getProperties()。getLastModified()。getTime();”部分产生异常。可能的解决方案是什么?异常消息仅显示为null。Azure存储类型为存储(通用v1)

public static void deleteOldBlobs(String source) {
    try {
        System.out.println("deleteOldBlobs started");
        CloudStorageAccount storageAccount = CloudStorageAccount
                .parse(PropertyUtil.getProperty("storageConnectionString"));
        CloudBlobClient blobClient = storageAccount.createCloudBlobClient();
        CloudBlobContainer sourceContainer = blobClient.getContainerReference(source);
        long daysBack = 30;
        System.out.println(daysBack);
        long cutoff = (daysBack * (24 * 60 * 60 * 1000));
        for (ListBlobItem blobItem : sourceContainer.listBlobs()) {
            String sourceFileName = new File(blobItem.getUri().toString()).getName();
            System.out.println(sourceFileName);
            CloudBlockBlob sourceBlob = sourceContainer.getBlockBlobReference(sourceFileName);
            System.out.println(sourceBlob.getProperties().getLastModified().getTime());
            long diff = new Date().getTime()- sourceBlob.getProperties().getLastModified().getTime();

            if (diff > cutoff) {
                sourceBlob.deleteIfExists();
            }
        }
        System.out.println("deleteOldBlobs ended");
    } catch (Exception ex) {
        System.out.println(ex.getMessage());
    } finally {
    }
}
azure-storage-blobs java-date
1个回答
0
投票

您需要调用downloadAttributes()方法来填充Blob的属性。

您的以下代码行:

downloadAttributes()

只是使用默认值设置的属性创建CloudBlockBlob sourceBlob = sourceContainer.getBlockBlobReference(sourceFileName); 的实例。当您调用CloudBlockBlob方法时,将进行网络调用并获取blob的属性。

© www.soinside.com 2019 - 2024. All rights reserved.