Minio 判断对象是否存在

Minio数据模型 中描述了 MinIO 中什么是桶,什么是对象,也给出了操作桶和操作对象的API。

在 MinIO 中, 对象 = 中间前缀 + 对象名称 。如何判定对象是否存在呢?

分析

在 MinIO 中并没有提供判断对象是否存在的操作,但是提供了 getObjectstatObject 两个相关接口。其中 getObject 用来获取对象,statObject 用来获取对象的元数据信息。

官方没有提供判断对象是否存在的接口,就可以间接使用 getObjectstatObject 来判断。

以下将使用Java代码查看示例两个这两个操作

实现

getObject

 /*** 使用 getObjct 操作判断对象是否存在* * @param bktName 桶名称* @param objName 对象名称* @return*/@GetMapping("exist-get")public boolean existByGetObject(String bktName, String objName) {if (bktName == null || bktName.isEmpty()) {return false;}if (objName == null || objName.isEmpty()) {return false;}GetObjectArgs getObjectArgs = GetObjectArgs.builder().bucket(bktName).object(objName).build();try {GetObjectResponse response = minioClient.getObject(getObjectArgs);return Objects.nonNull(response);} catch (InvalidKeyException | ErrorResponseException | InsufficientDataException | InternalException| InvalidResponseException | NoSuchAlgorithmException | ServerException | XmlParserException| IOException e) {e.printStackTrace();return false;}}

statObject

  /*** 使用 statObject 操作判断对象是否存在* * @param bktName* @param objName* @return*/@GetMapping("exist-stat")public boolean objectExist(String bktName, String objName) {if (bktName == null || bktName.isEmpty()) {return false;}if (objName == null || objName.isEmpty()) {return false;}StatObjectArgs args = StatObjectArgs.builder().bucket(bktName).object(objName).build();try {StatObjectResponse response = minioClient.statObject(args);return Objects.nonNull(response);} catch (InvalidKeyException | ErrorResponseException | InsufficientDataException | InternalException| InvalidResponseException | NoSuchAlgorithmException | ServerException | XmlParserException| IOException e) {e.printStackTrace();}return false;}

测试

Minio 数据如下

在这里插入图片描述

测试结果

启动项目后分别测试两个接口

getObject 操作的接口测试通过
在这里插入图片描述
statObject 操作的接口测试通过
在这里插入图片描述

很显然,两种方法都能判断对象是否存在。

注意 objName 的值 home/user/tmp/1705648247514/服务导入模板.xls ,改为 /home/user/tmp/1705648247514/服务导入模板.xls 也可以通过测试。

也就是说,objName 最前面的 / 可选。

如何选择

getObject 更多在对对象进行流操作时使用,其返回值 GetObjectResponseFilterInputStream 的子类。
statObject 更多在只单纯地查看对象是否存在时使用。

getObject 会直接返回对象流,而statObject 只是返回元数据信息。

相关文章

  • Windows 下使用Docker 安装 minio
  • SpringBoot 整合 MinIO 实践
  • Minio数据模型

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/243978.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024年上海高考数学最后四个多月的备考攻略,目标140+

亲爱的同学们,寒假已经来临,春节即将到来,距离2024年上海高考已经余额不足5个月了。作为让许多学子头疼,也是拉分大户的数学科目,你准备好了吗?今天,六分成长为您分享上海高考数学最后四个多月的…

内网安全管理系统(保密管理系统)

在当今信息化的时代,企业的内网已经成为其核心资产的重要组成部分。 随着企业的快速发展和信息化程度的提升,内网安全问题日益凸显,如何保障内网的安全和机密信息的保密性,已经成为企业亟待解决的问题。 内网安全管理系统(保密管…

性能优化(CPU优化技术)-NEON 介绍

「发表于知乎专栏《移动端算法优化》」 本节主要介绍基本 SIMD 及其他的指令流与数据流的处理方式,NEON 的基本原理、指令以及与其他平台及硬件的对比。 🎬个人简介:一个全栈工程师的升级之路! 📋个人专栏:…

Java面试题之基础篇

文章目录 一:谈谈你对面向对象的理解二:JDK、JRE、JVM三者区别和联系三:和equals比较四:hashCode与equals五:final六:String、StringBuffer、StringBuilder七:重载与重写的区别?八&a…

网络安全的概述

网络空间的概念 2003年美国提出网络空间的概念:一个由信息基础设施组成的互相依赖的网络。 我国官方文件定义:网络空间为继海,陆,空,天以外的第五大人类活动领域 网络安全发展历史 通信保密阶段 --- 计算机安全阶段…

MySQL中SELECT字句的顺序以及具体使用

目录 1.SELECT字句及其顺序 2.使用方法举例 3.HAVING和WHERE 1.SELECT字句及其顺序 *下表来自于图灵程序设计丛书,数据库系列——《SQL必知必会》 2.使用方法举例 *题目来源于牛客网 题目描述 现在运营想要查看不同大学的用户平均发帖情况,并期望结…

寒假思维训练day12 E. Increasing Subsequences

适合喜欢算法、对算法感兴趣的朋友。 今天又来更新啦,断更一天,有点摆了,今天继续补上,献上一道1800的构造。 摘要: part1:关于一些构造题的总结 part2: 每日一题: Problem - E - Codeforces (链接在此…

JAVA工程中引用本地jar的3种常用方式,你用过哪种?

文章目录 前言1. 第1种方式2. 第2种方式3. 第3种方式 前言 实际项目过程中咱们经常会碰到需要本地引用jar包到java工程中的场景,本文就介绍一下遇到此场景时如何在IDEA中导入本地jar包到工程中的3种方式,简单却很常用。 1. 第1种方式 IDEA -> File …

【优先级队列 之 堆的实现】

文章目录 前言优先级队列 PriorityQueue优先队列的模拟实现 堆堆的储存方式堆的创建建堆的时间复杂度堆的插入与删除 总结 前言 优先级队列 PriorityQueue 概念:对列是先进先出的的数据结构,但有些情况,数据可能带有优先级,一般出…

小程序学习-21

目前小程序分包大小有以下限制: 整个小程序所有分包大小不超过 20M单个分包/主包大小不能超过 2M 独立分包:"independent": true

【算法小记】——机器学习中的概率论和线性代数,附线性回归matlab例程

内容包含笔者个人理解,如果错误欢迎评论私信告诉我 线性回归matlab部分参考了up主DR_CAN博士的课程 机器学习与概率论 在回归拟合数据时,根据拟合对象,可以把分类问题视为一种简答的逻辑回归。在逻辑回归中算法不去拟合一段数据而是判断输入…

基于51单片机的超声波物位测量系统[proteus仿真]

基于51单片机的超声波物位测量系统[proteus仿真] 超声波检测系统这个题目算是课程设计和毕业设计中常见的题目了,本期是一个103基于51单片机的超声波物位测量系统 需要的源文件和程序的小伙伴可以关注公众号【阿目分享嵌入式】,赞赏任意文章 2&#xf…

git使用指南——以gitlab为例

注册gitlab 自行注册 新建项目 选择新建一个空白的项目 上传项目 clone项目地址到本地 执行完之后,会在目录下生成如下内容:进入里面,选择.git,要上传的内容(资料或代码复制到该目录下):…

Leetcode—40.组合总和II【中等】

2023每日刷题&#xff08;七十七&#xff09; Leetcode—40.组合总和II 算法思想 实现代码 class Solution { public:vector<vector<int>> combinationSum2(vector<int>& candidates, int target) {vector<vector<int>> ans;vector<int…

Linux之权限(内容详细,细节满满)

个人主页&#xff1a;点我进入主页 专栏分类&#xff1a;C语言初阶 C语言程序设计————KTV C语言小游戏 C语言进阶 C语言刷题 数据结构初阶 Linux 欢迎大家点赞&#xff0c;评论&#xff0c;收藏。 一起努力 目录 一.前言 二.权限修改的两种方法 …

【.NET Core】深入理解异步编程模型(APM)

【.NET Core】深入理解异步编程模型&#xff08;APM&#xff09; 文章目录 【.NET Core】深入理解异步编程模型&#xff08;APM&#xff09;一、APM概述二、IAsyncResult接口2.1 BeginInvoke2.2 EndInvoke2.3 IAsyncResult属性2.4 IAsyncResult异步演示 三、通过结束异步操作来…

容器技术2-镜像与容器储存

目录 一、镜像制作 1、ddocker build 2、docker commit 二、镜像存储 1、公共仓库 2、私有仓库 三、镜像使用 四、容器存储 1、镜像元数据 2、存储驱动 3、数据卷 一、镜像制作 1、ddocker build 基于 Dockerfile 自动构建镜像 其机制为&#xff1a;每一行都会基于…

上门回收小程序,打造回收新模式

近年来&#xff0c;我国一直秉持着环保绿色的发展理念&#xff0c;为了减少资源浪费&#xff0c;旧物回收成为了人们处理废弃物品的方式。目前&#xff0c;我国回收市场规模大约能达到3.58亿元&#xff0c;在我国经济的稳定增长和环保意识的提高下&#xff0c;回收市场规模还将…

Elastic Observability 8.12:AI 助手、SLO 和移动 APM 支持的正式发布

作者&#xff1a;来自 Elastic Tom Grabowski, Akhilesh Pokhariyal Elastic Observability 8.12 宣布 AI Assistant 全面上市 (正式发布)、服务级别目标 (SLO) 和移动 APM 支持&#xff1a; 服务级别目标 (service level objective - SLO)&#xff1a;现在正式发布版允许 SRE…

STL之map【有序哈希表】使用方法

这里写目录标题 map【有序哈希表】使用方法1.头文件:2.创建map:3.添加键值对:4.查找键值对&#xff1a;5.遍历键-值对&#xff1a;5.综合示例&#xff1a;班级学生 map【有序哈希表】使用方法 话不多说&#xff0c;接着讲map用法&#xff1a; map&#xff1a;映射&#xff0c…