Size: a a a

2019 September 30

AM

Andrew Mikhaylov in Kotlin Start
FOX
Привет. Учу котлин. подскажите, почему возаращается пустота
fun readData(path: String):String {

       val bufferedReader: BufferedReader = File(path).bufferedReader();
       val inputString = bufferedReader.use { it.readText() }
       return inputString
   }

но если вместо return написать print(inputString) и убрать тип возвращаемого значения,то все работает
Я предполагаю, что вы на вызывающей стороне что-то делаете не так. У меня ваш сниппет работает.
источник

F

FOX in Kotlin Start
Andrew Mikhaylov
Я предполагаю, что вы на вызывающей стороне что-то делаете не так. У меня ваш сниппет работает.
странно, но у меня тоже заработал
источник

F

FOX in Kotlin Start
Andrew Mikhaylov
Я предполагаю, что вы на вызывающей стороне что-то делаете не так. У меня ваш сниппет работает.
а как вообще правильно читать файл в Котлин? просто я пользуюсьб заниями java и делаю пока как там
источник

AM

Andrew Mikhaylov in Kotlin Start
FOX
а как вообще правильно читать файл в Котлин? просто я пользуюсьб заниями java и делаю пока как там
Всё правильно делаете, те же java.io.* и NIO, просто обмазанные удобными экстеншнами.

В разработке мультиплатформенный ввод-вывод, но его пока совсем нет, да и нужен он не всем будет.
источник

F

FOX in Kotlin Start
Andrew Mikhaylov
Всё правильно делаете, те же java.io.* и NIO, просто обмазанные удобными экстеншнами.

В разработке мультиплатформенный ввод-вывод, но его пока совсем нет, да и нужен он не всем будет.
Спасибо. Для больших файлов лучше делать через bufferReader? Как в и джаве?
источник

AN

Alexander Nozik in Kotlin Start
FOX
Спасибо. Для больших файлов лучше делать через bufferReader? Как в и джаве?
Лучше через nio, но в принципе да, все то же самое.
источник

AM

Andrew Mikhaylov in Kotlin Start
Ну с оговоркой, что NIO 2 на ведре доступно, начиная с Oreo :D
источник

AM

Andrew Mikhaylov in Kotlin Start
То есть файлики почитать можно, а вот буферы и каналы уже аля-улю
источник

AL

Alexander Levin in Kotlin Start
FOX
а как вообще правильно читать файл в Котлин? просто я пользуюсьб заниями java и делаю пока как там
Ну т.е. всё примерно тоже самое, просто есть немного приятных экстеншнов (можно например сразу у File делать readText/readLines/useLines)

Про nio мало знаю, но полагаю, что идея та же самая
источник

F

FOX in Kotlin Start
Все равно пока трудно понять что и как использовать, в Джаве проще мне пока( На данный момент пользуюсь переводом из Джавы в Котлин в inetellij IDEA
источник

F

FOX in Kotlin Start
Всем спасибо за помощь! Разобрался. Все равно пока пищу Java style код, но уже лучше. Сделал так

fun readFile(path: String): String {
       var result: String = "";
       try {
           val bufferedReader: BufferedReader = Files.newBufferedReader(Paths.get(path), StandardCharsets.UTF_8);
           result = bufferedReader.use { it.readText() };
       } catch (ex: IOException) {
           ex.printStackTrace();
       }
       return result
   }
источник

M

Marat.k in Kotlin Start
FOX
Всем спасибо за помощь! Разобрался. Все равно пока пищу Java style код, но уже лучше. Сделал так

fun readFile(path: String): String {
       var result: String = "";
       try {
           val bufferedReader: BufferedReader = Files.newBufferedReader(Paths.get(path), StandardCharsets.UTF_8);
           result = bufferedReader.use { it.readText() };
       } catch (ex: IOException) {
           ex.printStackTrace();
       }
       return result
   }
/**
* Gets the entire content of this file as a String using UTF-8 or specified [charset].
*
* This method is not recommended on huge files. It has an internal limitation of 2 GB file size.
*
* @param charset character set to use.
* @return the entire content of this file as a String.
*/
public fun File.readText(charset: Charset = Charsets.UTF_8): String = readBytes().toString(charset)
источник

AM

Andrew Mikhaylov in Kotlin Start
С точки зрения котлинизации кода можно бахнуть
fun readFile(...) = try {
   Files.newBufferedReader(...).use {
       it.readText()
   }
} catch(...) {
   e.printStackTrace()
   ""
}

Ну и Марат несомненно прав, что конкретно для этого кейса есть экстеншн, благодаря которому это всё вообще писать не надо :)
источник

F

FOX in Kotlin Start
Andrew Mikhaylov
С точки зрения котлинизации кода можно бахнуть
fun readFile(...) = try {
   Files.newBufferedReader(...).use {
       it.readText()
   }
} catch(...) {
   e.printStackTrace()
   ""
}

Ну и Марат несомненно прав, что конкретно для этого кейса есть экстеншн, благодаря которому это всё вообще писать не надо :)
Согласен с Вами, но пока пишу в джава стиле, так как про котлин вчера начал читать только
источник

AM

Andrew Mikhaylov in Kotlin Start
А, ну о чём речь тогда, конечно это не сразу будет всё.
источник

F

FOX in Kotlin Start
А есть ли в Котлине, джаве аналог URI builder из андроид? Или ручками параметры собирать через HashMap?
источник

AM

Andrew Mikhaylov in Kotlin Start
А чем вам андроидный не подходит?
источник

MG

Matthew Good in Kotlin Start
can a when expression be split into multiple lamda's ? for example, https://del.dog/ezenewexun.kt
источник

F

FOX in Kotlin Start
Andrew Mikhaylov
А чем вам андроидный не подходит?
тем, что пишу не под андроид
источник

AM

Andrew Mikhaylov in Kotlin Start
FOX
тем, что пишу не под андроид
У спринга есть свой, у ктора есть свой, есть в апачёвом http клиенте. Выбирайте в зависимости от того, что делаете.
источник