Google Storage存储桶中有一个文件夹。
当且仅当它为空时,我需要删除(使用JSON API)文件夹(让我们表示xxx/
)。
最明显的方法是检查它是否为空,如果为空则删除。这需要额外的请求,也可能受到竞争条件的限制。
但是,如何无条件地删除xxx/
对象呢?如果它是空的,则删除将执行我们需要的操作,如果它是非空的,xxx/
将继续表现得像文件夹,因为存在前缀为xxx/
的文件。
这种方式是否有任何问题(即无条件删除xxx/
对象是否有或没有子对象?)
答案 0 :(得分:2)
删除xxx / object不会删除任何对象" inside"文件夹。
请注意,该对象是由工具(如云存储Web控制台)创建的,以支持文件夹内部实际上是GCS中的平面命名空间的错觉(即,对于没有文件夹的服务,以及工具使用" /"字符来模仿存储桶中的文件夹。)
执行所需操作的唯一方法是获取xxx /前缀下的对象列表,如果该列表非空,则不删除xxx /对象。但是,这样做具有固有的竞争条件,因为有人可以在您进行检查后编写新对象。