我需要读取一个文本文件,并且readLines()我已经找到了这个问题,但是答案中的代码总是使用javaClass;的一些变体。它似乎只能在类中工作,而我只使用一个简单的 Kotlin 文件,没有声明类。这样写在语法上是正确的,但它看起来真的很难看,而且它总是返回null,所以它一定是错误的:
val lines = object {}.javaClass.getResource("file.txt")?.toURI()?.toPath()?.readLines()
Run Code Online (Sandbox Code Playgroud)
当然我可以像这样指定原始路径,但我想知道是否有更好的方法:
val lines = File("src/main/resources/file.txt").readLines()
Run Code Online (Sandbox Code Playgroud)
rdx*_*dkr 10
感谢这个答案提供了读取文件的正确方法。目前,在不使用javaClass或类似结构的情况下从资源读取文件似乎是不可能的。
// use this if you're inside a class
val lines = this::class.java.getResourceAsStream("file.txt")?.bufferedReader()?.readLines()
// use this otherwise
val lines = object {}.javaClass.getResourceAsStream("file.txt")?.bufferedReader()?.readLines()
Run Code Online (Sandbox Code Playgroud)
根据我发现的其他类似问题,第二种方法也可能在 lambda 中工作,但我还没有测试过。请注意从此时开始需要的?.运算符和语法,因为如果未找到具有给定名称的资源,则返回。lines?.let {}getResourceAsStream()null
| 归档时间: |
|
| 查看次数: |
7261 次 |
| 最近记录: |