当前位置: 首页 > 知识库问答 >
问题:

使用Java删除Azure Blob存储中的文件夹

姜德容
2023-03-14

如何删除azure blob存储中的文件夹。当我试图删除文件夹时,我看到以下错误:

com.azure.storage.blob.models.BloStorageExctive:状态代码409,"DirectoryIsNot空在非空目录上不允许进行此操作。请求ID:195b3f66-601e-0071-2edb-094790000000时间:2022-01-15T06:47:55.8443865Z"

在sun.reflect.mpl.newInstance0(本机方法)在sun.reflect.mpl.new实例(NativeConstrattorAccessorImpl.java:62)在sun.reflect.在java.lang.reflect.Constructor.new实例(Constructor.java:423)在com.azure.core.http.rest.RestProxy.instantiate意外异常(RestProxy.java:389)在com.azure.core.http.rest.RestProxy.lambda$ensureOutectedStatus7美元(RestProxy.java:444)

共有1个答案

宋晋
2023-03-14

不确定下面的版本是否是最优化的版本。但它似乎奏效了:

public static void deleteAtLocation(BlobContainerClient container, String historical) {
    if (checkIfPathExists(container, historical)) {
        List<BlobItem> collect = container.listBlobsByHierarchy(historical).stream().collect(Collectors.toList());
        for (BlobItem blobItem : collect) {
            String name = blobItem.getName();
            if (name.endsWith("/")) {
                deleteAtLocation(container, name);
            } else container.getBlobClient(name).delete();
        }
        container.getBlobClient(historical.substring(0, historical.length() - 1)).delete();
    }
}

public static boolean checkIfPathExists(BlobContainerClient container, String filePath) {
    BlobClient blobClient = container.getBlobClient(filePath);
    return blobClient.exists();
}
 类似资料:
  • 我了解到,每次部署firebase云功能时,firebase都会自动将一些数据保存在firebase存储中。我很想知道哪些数据被保存,如果删除是安全的,或者任何关于删除什么的建议。 我有一个小项目,200MB的云存储用于用户数据和10个云功能来完成各种任务。10月初,我做了很少的firebase部署操作,现在我看到了900MB的us.artifacts数据。请参阅下面的firebase和googl

  • 我正在使用Hadoop GCS Connector 3-2.2.2和google云存储版本1.113.14将数据写入谷歌云存储上的文件。 我有一个文件类,它有一个写方法,返回一个输出流如下使用hadoop类: FS是org.apache.hadoop.fs.FileSystem的实例;path是导入org.apache.hadoop.fs.Path的实例; 我甚至尝试使用谷歌云存储sdk来实现我的

  • 问题内容: 我可以轻松删除子引用中的文件,但是如何从Firebase Storage中删除整个文件夹? 错误文件不存在。有任何想法吗? 问题答案: 长话短说,我们尚未实现递归(或文件夹)删除。 目前,我们建议将文件列表存储在另一个源(例如,实时数据库)中,并根据需要删除文件。您也可以在Firebase控制台(console.firebase.google.com)中执行这种删除。 将来,我们可能会

  • 问题内容: 作为我正在做的项目的一部分,我想清理我生成的重复行条目的文件。但是,这些重复项通常不会彼此靠近发生。我想出了一种用Java执行此操作的方法(基本上是复制文件,然后使用嵌套的while语句将一个文件中的每一行与其他文件中的每一行进行比较)。问题是我生成的文件很大而且文本很重(大约22.5万行文本,大约40兆)。我估计目前的程序需要63个小时!这绝对是不可接受的。 但是,我需要一个集成的解

  • 我正在使用gradle构建一个Spring Boot应用程序,我希望从war中删除文件,因为该文件将从外部加载(它运行在tomcat容器中,而不是嵌入式的)。 我查看了StackOverflow和Gradle文档,试图找出该做什么,但我不知道该绑定到哪个阶段,以及在创建war之前还是之后排除该文件。处理文件似乎也有多种方法。 我相信Maven使用作为等价物。

  • 问题内容: 我想使用Java创建和删除目录,但是它不起作用。 问题答案: Java无法删除其中包含数据的文件夹。您必须先删除所有文件,然后再删除文件夹。 使用类似: 然后,您应该可以使用 Untested 删除文件夹!