В моем проекте Kotlin в папке src / resources / I есть файл pair_ids.txt.
Здесь код: Это файл свойств:
key=value
Количество всех строк 1389 .
Здесь код, который строка за строкой читает содержимое этого файла.
import org.slf4j.LoggerFactory
private val logger = LoggerFactory.getLogger("Exchange")
private var allSymbolsIDsMap: Map<String, String> = mapOf()
val pairsIDs = getResourceAsText("/pairs_ids.txt")
allSymbolsIDsMap = pairsIDs.split(",").associate {
val (left, right) = it.split("=")
left to right.toString()
}
logger.info("allSymbolsIDsMap_size = " + allSymbolsIDsMap.size)
var countAllSymbolHandler = 0
for ((key, value) in allSymbolsIDsMap) {
countAllSymbolHandler++
logger.info("countAllSymbolHandler = $countAllSymbolHandler")
}
private fun getResourceAsText(path: String): String {
return object {}.javaClass.getResourceAsStream(path).bufferedReader().use { it.readText() }
}
Результат:
Запуск проекта:
allSymbolsIDsMap_size = 1389
Start project - "countAllSymbolHandler =" print 1113 times
Снова запустите проект:
allSymbolsIDsMap_size = 1389
"countAllSymbolHandler =" print 242 times
Если заменить logger.info
на простой println
, то успех сработает.Количество всегда 1389 .
Почему цикл (для) не работает корректно с logger ?