diff --git a/spring-core/src/main/kotlin/org/springframework/util/ResourceClasspathFileUtil.kt b/spring-core/src/main/kotlin/org/springframework/util/ResourceClasspathFileUtil.kt new file mode 100644 index 000000000000..341e3c651625 --- /dev/null +++ b/spring-core/src/main/kotlin/org/springframework/util/ResourceClasspathFileUtil.kt @@ -0,0 +1,13 @@ +package org.springframework.util + +import java.io.File + +/** + * Class for reading files from classpath without defining classpath directory. + * E.g. you can load json files from classpath easily with this class. + * @param resourcePath path to resource in classpath. + * + * @author Alexander Ilinykh + */ +class ResourceClasspathFileUtil(resourcePath: String) : + File(ResourceClasspathFileUtil::class.java.classLoader.getResource(resourcePath)!!.toURI()) \ No newline at end of file diff --git a/spring-core/src/test/kotlin/org/springframework/util/ResourceClasspathFileUtilTest.kt b/spring-core/src/test/kotlin/org/springframework/util/ResourceClasspathFileUtilTest.kt new file mode 100644 index 000000000000..8a8b18d3effb --- /dev/null +++ b/spring-core/src/test/kotlin/org/springframework/util/ResourceClasspathFileUtilTest.kt @@ -0,0 +1,13 @@ +package org.springframework.util + +import org.assertj.core.api.Assertions +import org.junit.jupiter.api.Test + +class ResourceClasspathFileUtilTest { + + @Test + fun correctReadFromClasspath() { + val file = ResourceClasspathFileUtil("org/springframework/util/classpathfileutildata.txt") + Assertions.assertThat(file.readText()).isEqualTo("Hello Spring!") + } +} \ No newline at end of file diff --git a/spring-core/src/test/resources/org/springframework/util/classpathfileutildata.txt b/spring-core/src/test/resources/org/springframework/util/classpathfileutildata.txt new file mode 100644 index 000000000000..70663af0f694 --- /dev/null +++ b/spring-core/src/test/resources/org/springframework/util/classpathfileutildata.txt @@ -0,0 +1 @@ +Hello Spring! \ No newline at end of file