【发布时间】:2020-05-06 04:03:37
【问题描述】:
我想使用以下方法删除 30 天前的 blob。 但是,似乎“sourceBlob.getProperties().getLastModified().getTime();”的部分产生异常。 可能的解决方案是什么? 异常消息仅显示 null。 Azure 存储类型为 Storage(通用 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 {
}
}
【问题讨论】:
-
您遇到了什么异常?请编辑您的问题并包含这些详细信息。
-
另外,如果您的存储帐户的类型是通用 v2 (GPv2) 或 Blob 存储,请查看此内容:stackoverflow.com/questions/56903837/…。
-
我只得到了异常消息的空值。存储帐户类型为 Storage(通用 v1)。我会将以上信息添加到我的帖子中。