开发者社区> 问答> 正文

.NET-SDK之如何实现管理文件(四)?


列出目录下的文件和子目录


在 Prefix 和 Delimiter 结合的情况下,可以列出目录下的文件和子目录:

  1. using Aliyun.OSS;
  2. // 初始化OssClient
  3. var client = new OssClient(endpoint, accessKeyId, accessKeySecret);
  4. public void ListObjects(string bucketName)
  5. {
  6.     try
  7.     {
  8.         var listObjectsRequest = new ListObjectsRequest(bucketName)
  9.         {
  10.             Prefix = "fun/",
  11.             Delimiter = "/"
  12.         };
  13.         result = client.ListObjects(listObjectsRequest);
  14.         Console.WriteLine("List object succeeded");
  15.         Console.WriteLine("File:");
  16.         foreach (var summary in result.ObjectSummaries)
  17.         {
  18.             Console.WriteLine("Name:{0}", summary.Key);
  19.         }
  20.         Console.WriteLine("Dir:");
  21.         foreach (var prefix in result.CommonPrefixes)
  22.         {
  23.             Console.WriteLine("Name:{0}", prefix);
  24.         }
  25.     }
  26.     catch (Exception ex)
  27.     {
  28.         Console.WriteLine("List object failed. {0}", ex.Message);
  29.     }
  30. }

输出:
  1. List object success
  2. File:
  3. Name:fun/test.jpg
  4. Dir:
  5. Name:fun/movie/

说明:
  • 返回的结果中, ObjectSummaries 的列表中给出的是fun目录下的文件。
  • 而 CommonPrefixs 的列表中给出的是fun目录下的所有子文件夹。可以看出 fun/movie/001.avi 和 fun/movie/007.avi 两个文件并没有被列出来,因为它们属于fun文件夹下的movie目录。


删除文件



删除一个文件

  1. using Aliyun.OSS;
  2. // 初始化OssClient
  3. var client = new OssClient(endpoint, accessKeyId, accessKeySecret);
  4. /// <summary>
  5. /// 列出指定存储空间下的特定文件
  6. /// </summary>
  7. /// <param name="bucketName">存储空间的名称</param>
  8. /// <param name="key">文件的名称</param>
  9. public void DeleteObject(string bucketName, string key)
  10. {
  11.     try
  12.     {
  13.         client.DeleteObject(bucketName, key);
  14.         Console.WriteLine("Delete object succeeded");
  15.     }
  16.     catch (Exception ex)
  17.     {
  18.         Console.WriteLine("Delete object failed. {0}", ex.Message);
  19.     }
  20. }

说明: 完整代码参考 GitHub


删除多个文件

  1. using Aliyun.OSS;
  2. // 初始化OssClient
  3. var client = new OssClient(endpoint, accessKeyId, accessKeySecret);
  4. /// <summary>
  5. /// 删除指定存储空间中的所有文件
  6. /// </summary>
  7. /// <param name="bucketName">存储空间的名称</param>
  8. public void DeleteObjects(string bucketName)
  9. {
  10.     try
  11.     {
  12.         var keys = new List<string>();
  13.         var listResult = client.ListObjects(bucketName);
  14.         foreach (var summary in listResult.ObjectSummaries)
  15.         {
  16.             keys.Add(summary.Key);
  17.         }
  18.         var request = new DeleteObjectsRequest(bucketName, keys, false);
  19.         client.DeleteObjects(request);
  20.         Console.WriteLine("Delete objects succeeded");
  21.     }
  22.     catch (Exception ex)
  23.     {
  24.         Console.WriteLine("Delete objects failed. {0}", ex.Message);
  25.     }
  26. }

说明: 完整代码参考 GitHub

展开
收起
青衫无名 2017-10-18 15:20:27 1729 0
0 条回答
写回答
取消 提交回答
问答排行榜
最热
最新

相关电子书

更多
从 SDK 到编解码:视频直播架构解析 立即下载
跨平台的云服务SDK需要什么 立即下载
一个跨平台的云服务SDK需要什么 立即下载