本文介绍如何删除文件。

警告 请您谨慎使用删除操作,文件一旦删除将无法恢复。

删除单个文件

以下代码用于删除单个文件:

// Endpoint以杭州为例,其它Region请按实际情况填写。
String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
String accessKeyId = "<yourAccessKeyId>";
String accessKeySecret = "<yourAccessKeySecret>";
String bucketName = "<yourBucketName>";
String objectName = "<yourObjectName>";

// 创建OSSClient实例。
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);

// 删除文件。
ossClient.deleteObject(bucketName, objectName);

// 关闭OSSClient。
ossClient.shutdown();

删除多个文件

每次最多删除1000个文件。有两种返回模式:

  • 详细(verbose)模式:返回删除成功的文件列表。默认为详细模式。
  • 简单(quiet)模式:返回删除失败的文件列表。

DeleteObjectsRequest的参数如下:

参数 描述 方法
Keys 需要删除的文件。 setKeys(List<String>)
quiet 返回模式。true表示简单模式,false表示详细模式。默认为详细模式。 setQuiet(boolean)
encodingType 指定对返回的文件名称进行编码,目前仅支持url。 setEncodingType(String)

DeleteObjectsResult的参数如下:

参数 描述 方法
deletedObjects 删除结果。详细模式下为删除成功的文件列表,简单模式下为删除失败的文件列表。 List<String> getDeletedObjects()
encodingType deletedObjects中文件名称的编码,为空表示没有编码。 getEncodingType()

以下代码用于批量删除文件:

// Endpoint以杭州为例,其它Region请按实际情况填写。
String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
String accessKeyId = "<yourAccessKeyId>";
String accessKeySecret = "<yourAccessKeySecret>";
String bucketName = "<yourBucketName>";

// 创建OSSClient实例。
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);

// 删除文件。
List<String> keys = new ArrayList<String>();
keys.add("key0");
keys.add("key1");
keys.add("key2");

DeleteObjectsResult deleteObjectsResult = ossClient.deleteObjects(new DeleteObjectsRequest(bucketName).withKeys(keys));
List<String> deletedObjects = deleteObjectsResult.getDeletedObjects();

// 关闭OSSClient。
ossClient.shutdown();

批量删除文件的完整代码请参见GitHub