diff --git a/libraries-data-2/pom.xml b/libraries-data-2/pom.xml
index 655bad2e2b..b9b785cebb 100644
--- a/libraries-data-2/pom.xml
+++ b/libraries-data-2/pom.xml
@@ -116,6 +116,11 @@
guava
${guava.version}
+
+ io.minio
+ minio
+ ${minio.version}
+
org.awaitility
awaitility
@@ -177,6 +182,7 @@
3.0.0
2.8.4
2.1.13
+ 8.5.2
-
\ No newline at end of file
+
diff --git a/libraries-data-2/src/main/java/com/baeldung/minio/MinIOService.java b/libraries-data-2/src/main/java/com/baeldung/minio/MinIOService.java
new file mode 100644
index 0000000000..f7a8f498be
--- /dev/null
+++ b/libraries-data-2/src/main/java/com/baeldung/minio/MinIOService.java
@@ -0,0 +1,35 @@
+package com.baeldung.minio;
+
+import io.minio.GetObjectArgs;
+import io.minio.MakeBucketArgs;
+import io.minio.MinioClient;
+import io.minio.UploadObjectArgs;
+
+public class MinIOService {
+ private MinioClient minioClient =
+ MinioClient.builder()
+ .endpoint("http://127.0.0.1:9000")
+ .credentials("minioadmin", "minioadmin")
+ .build();
+
+ public void doSomething() throws Exception {
+ minioClient.makeBucket(
+ MakeBucketArgs
+ .builder()
+ .bucket("user2")
+ .build());
+
+ minioClient.uploadObject(
+ UploadObjectArgs
+ .builder()
+ .bucket("user2")
+ .filename("/tmp/Resume.pdf")
+ .build());
+
+ minioClient.getObject(
+ GetObjectArgs.builder()
+ .bucket("user2")
+ .object("Resume.pdf")
+ .build());
+ }
+}
diff --git a/libraries-data-2/src/test/java/com/baeldung/minio/MinIOServiceLiveTest.java b/libraries-data-2/src/test/java/com/baeldung/minio/MinIOServiceLiveTest.java
new file mode 100644
index 0000000000..8737e5e7aa
--- /dev/null
+++ b/libraries-data-2/src/test/java/com/baeldung/minio/MinIOServiceLiveTest.java
@@ -0,0 +1,73 @@
+package com.baeldung.minio;
+
+import io.minio.*;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.io.*;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+public class MinIOServiceLiveTest {
+
+ private MinioClient minioClient;
+
+ private final String BUCKET_NAME = "livetest";
+
+ private final String OBJECT_NAME = "minio_sample.txt";
+
+ private final String CONTENTS = "hello";
+
+ @Before
+ public void setup() {
+ minioClient =
+ MinioClient.builder()
+ .endpoint("http://127.0.0.1:9000")
+ .credentials("minioadmin", "minioadmin")
+ .build();
+ }
+
+ @Test
+ public void givenFile_whenUploadAndRetrive_thenContentsAreCorrect() throws Exception {
+
+ if(!minioClient.bucketExists(BucketExistsArgs
+ .builder()
+ .bucket(BUCKET_NAME)
+ .build())) {
+
+ minioClient.makeBucket(MakeBucketArgs
+ .builder()
+ .bucket(BUCKET_NAME)
+ .build());
+ }
+
+ minioClient.putObject(PutObjectArgs
+ .builder()
+ .bucket(BUCKET_NAME)
+ .object(OBJECT_NAME)
+ .stream(new ByteArrayInputStream(CONTENTS.getBytes()), CONTENTS.length(),-1)
+ .build());
+
+ try (InputStream stream =
+ minioClient.getObject(GetObjectArgs
+ .builder()
+ .bucket(BUCKET_NAME)
+ .object(OBJECT_NAME)
+ .build())) {
+
+ byte[] obj = new byte[CONTENTS.length()];
+ stream.read(obj);
+ assertEquals(CONTENTS, new String(obj));
+ }
+ catch (IOException e) {
+
+ }
+ finally {
+ minioClient.removeObject(RemoveObjectArgs
+ .builder()
+ .bucket(BUCKET_NAME)
+ .object(OBJECT_NAME)
+ .build());
+ }
+ }
+}