diff --git a/src/main/java/de/nclazz/commons/io/StreamUtils.java b/src/main/java/de/nclazz/commons/io/StreamUtils.java index 92b4c95..c343499 100644 --- a/src/main/java/de/nclazz/commons/io/StreamUtils.java +++ b/src/main/java/de/nclazz/commons/io/StreamUtils.java @@ -2,8 +2,10 @@ package de.nclazz.commons.io; import de.nclazz.commons.util.StringUtils; import lombok.NonNull; +import lombok.SneakyThrows; import java.io.*; +import java.nio.charset.Charset; import java.security.MessageDigest; public abstract class StreamUtils { @@ -63,5 +65,47 @@ public abstract class StreamUtils { } } + /** + * Converts given string to an InputStream. + * @param string to convert + * @return new InputStream + */ + public static InputStream toInputStream(@NonNull String string, Charset charset) { + charset = charset != null ? charset : Charset.defaultCharset(); + byte[] bytes = string.getBytes(charset); + return new ByteArrayInputStream(bytes); + } + + /** + * @see #toInputStream(String, Charset) + * @param string to read + * @return new InputStream + */ + public static InputStream toInputStream(@NonNull String string) { + return toInputStream(string, Charset.defaultCharset()); + } + + /** + * Reads the given InputStream and converts it to a String. + * The stream does not close after this operation. + * @param stream to read + * @param charset of the String + * @return new String + */ + @SneakyThrows + public static String toString(@NonNull InputStream stream, Charset charset) { + charset = charset != null ? charset : Charset.defaultCharset(); + byte[] bytes = inputStreamToByteArray(stream); + return new String(bytes, charset); + } + + /** + * @see #toString(InputStream, Charset) + * @param stream to read + * @return new String + */ + public static String toString(@NonNull InputStream stream) { + return toString(stream, Charset.defaultCharset()); + } } diff --git a/src/main/java/de/nclazz/commons/util/StringUtils.java b/src/main/java/de/nclazz/commons/util/StringUtils.java index 3527fa3..fa8a307 100644 --- a/src/main/java/de/nclazz/commons/util/StringUtils.java +++ b/src/main/java/de/nclazz/commons/util/StringUtils.java @@ -3,6 +3,7 @@ package de.nclazz.commons.util; import lombok.NonNull; import lombok.SneakyThrows; +import java.io.InputStream; import java.security.MessageDigest; public abstract class StringUtils { diff --git a/src/test/java/de/nclazz/commons/io/StreamUtilsTests.java b/src/test/java/de/nclazz/commons/io/StreamUtilsTests.java index 3f5766e..231066f 100644 --- a/src/test/java/de/nclazz/commons/io/StreamUtilsTests.java +++ b/src/test/java/de/nclazz/commons/io/StreamUtilsTests.java @@ -8,6 +8,7 @@ import java.io.IOException; import java.io.InputStream; import java.util.Arrays; +import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; public class StreamUtilsTests { @@ -37,4 +38,16 @@ public class StreamUtilsTests { assertTrue(Arrays.equals(alphabetBytes, bytes)); } + @Test + void stringToInputStreamRoundTrip() throws IOException { + String testString = "Hello World!"; + InputStream stream = StreamUtils.toInputStream(testString); + String backString = StreamUtils.toString(stream); + + stream.close(); + + assertEquals(testString, backString); + } + + }