반응형
Kotlin의 리소스에서 텍스트 파일을 읽는 방법은 무엇입니까?
Kotlin에서 Spek 테스트를 작성하고 싶습니다. 테스트는 src/test/resources
폴더 에서 HTML 파일을 읽어야 합니다. 어떻게하나요?
class MySpec : Spek({
describe("blah blah") {
given("blah blah") {
var fileContent : String = ""
beforeEachTest {
// How to read the file file.html in src/test/resources/html
fileContent = ...
}
it("should blah blah") {
...
}
}
}
})
val fileContent = MySpec::class.java.getResource("/html/file.html").readText()
또 다른 약간 다른 솔루션 :
@Test
fun basicTest() {
"/html/file.html".asResource {
// test on `it` here...
println(it)
}
}
fun String.asResource(work: (String) -> Unit) {
val content = this.javaClass::class.java.getResource(this).readText()
work(content)
}
이것이 왜 그렇게 어려운지 모르겠지만 내가 찾은 가장 간단한 방법은 (특정 클래스를 참조하지 않고도) 다음과 같습니다.
fun getResourceAsText(path: String): String {
return object {}.javaClass.getResource(path).readText()
}
그런 다음 절대 URL을 전달합니다. 예 :
val html = getResourceAsText("/www/index.html")
약간 다른 솔루션 :
class MySpec : Spek({
describe("blah blah") {
given("blah blah") {
var fileContent = ""
beforeEachTest {
html = this.javaClass.getResource("/html/file.html").readText()
}
it("should blah blah") {
...
}
}
}
})
Kotlin + Spring 방식 :
@Autowired
private lateinit var resourceLoader: ResourceLoader
fun load() {
val html = resourceLoader.getResource("classpath:html/file.html").file
.readText(charset = Charsets.UTF_8)
}
val fileContent = javaClass.getResource("/html/file.html").readText()
Google Guava 라이브러리 리소스 클래스 사용 :
import com.google.common.io.Resources;
val fileContent: String = Resources.getResource("/html/file.html").readText()
File 클래스가 유용 할 수 있습니다.
import java.io.File
fun main(args: Array<String>) {
val content = File("src/main/resources/input.txt").readText()
print(content)
}
참고 URL : https://stackoverflow.com/questions/42739807/how-to-read-a-text-file-from-resources-in-kotlin
반응형
'program tip' 카테고리의 다른 글
메이크 파일 디버깅 도구 (0) | 2020.12.01 |
---|---|
.RData에 데이터 파일을 저장하는 방법은 무엇입니까? (0) | 2020.11.30 |
translatable =“false”인 strings.xml의 "여기에서 번역되었지만 기본 로케일에서 찾을 수 없음"오류 (0) | 2020.11.30 |
“Mapping architecture arm64 to x86_64”경고는 무엇을 의미합니까? (0) | 2020.11.30 |
Windows에서 특정 패턴의 파일을 단일 플랫 폴더에 재귀 적으로 복사하려면 어떻게해야합니까? (0) | 2020.11.30 |