在Kotlin中可能有各种读取纯文本文件方法。我想知道有哪些可能的方法,以及我如何使用它们。
hts6caw31#
1.使用缓冲读取器
import java.io.File import java.io.BufferedReader fun main(args: Array<String>) { val bufferedReader: BufferedReader = File("example.txt").bufferedReader() val inputString = bufferedReader.use { it.readText() } println(inputString) }
2.使用输入数据流按行读取
import java.io.File import java.io.InputStream fun main(args: Array<String>) { val inputStream: InputStream = File("example.txt").inputStream() val lineList = mutableListOf<String>() inputStream.bufferedReader().forEachLine { lineList.add(it) } lineList.forEach{println("> " + it)} }
读取所有行
import java.io.File import java.io.InputStream fun main(args: Array<String>) { val inputStream: InputStream = File("example.txt").inputStream() val inputString = inputStream.bufferedReader().use { it.readText() } println(inputString) }
3.直接使用文件
import java.io.File import java.io.BufferedReader fun main(args: Array<String>) { val lineList = mutableListOf<String>() File("example.txt").useLines { lines -> lines.forEach { lineList.add(it) }} lineList.forEach { println("> " + it) } }
cfh9epnr2#
我认为最简单的编码方法是使用Kotlin和java.io.file。
import java.io.File fun main(args: Array<String>) { val text = File("sample.txt").readText() println(text) }
a64a0gku3#
上面的答案都是基于KotlinJava的。下面是一个Kotlin Native读取文本文件的方法:
val bufferLength = 64 * 1024 val buffer = allocArray<ByteVar>(bufferLength) for (i in 1..count) { val nextLine = fgets(buffer, bufferLength, file)?.toKString() if (nextLine == null || nextLine.isEmpty()) break val records = parseLine(nextLine, ',') val key = records[column] val current = keyValue[key] ?: 0 keyValue[key] = current + 1 } fun parseLine(line: String, separator: Char) : List<String> { val result = mutableListOf<String>() val builder = StringBuilder() var quotes = 0 for (ch in line) { when { ch == '\"' -> { quotes++ builder.append(ch) } (ch == '\n') || (ch == '\r') -> {} (ch == separator) && (quotes % 2 == 0) -> { result.add(builder.toString()) builder.setLength(0) } else -> builder.append(ch) } } return result }
请参阅:https://github.com/JetBrains/kotlin-native/blob/master/samples/csvparser/src/csvParserMain/kotlin/CsvParser.kt
hzbexzde4#
Anisuzzaman的回答列出了几种可能性。它们之间的主要区别在于文件是作为单个字符串读入内存,读入内存并拆分为多行,还是逐行读取。显然,一次性将整个文件读入内存会占用更多的内存,因此除非真的有必要,否则应该避免这种情况。(文本文件可以变得任意大!)因此,使用BufferedReader.useLines()逐行处理通常是一种很好的方法。剩下的差别大多是历史性的,早期的Java版本使用InputStream &c,它不能正确区分字符和字节; Java 8增加了使用流更有效地逐行读取的方法(例如Files.lines())。最近,Kotlin增加了它自己的扩展函数(例如BufferedReader.useLines()),这使得它更加简单。
BufferedReader.useLines()
InputStream
Files.lines()
yqkkidmi5#
要读取文本文件,必须先创建该文件。在Android Studio中,您可以创建如下文本文件:1)从垂直工具栏顶部选择“项目”打开项目“工具窗口”2)从“工具窗口”顶部的下拉菜单中,选择“Android”3)右键单击“应用程序”,然后选择“新建”-〉“文件夹”(旁边有绿色Android图标的那个)然后-〉“资产文件夹”4)在“资产”文件夹出现在“工具窗口”后右键单击它5)选择“新建”-〉“File”6)命名文件,如果是文本文件,则添加扩展名“.txt”;如果是WebView,则添加扩展名“.html”7)编辑文件或将文本剪切并粘贴到其中。该文件现在将显示在“工具窗口”中的“项目”文件下,您可以随时双击它进行编辑。要访问此文件,请使用前缀“application.assets.”,后跟someFunction(fileName)。例如(在Kotlin中):
val fileName = "townNames.txt" val inputString = application.assets.open(fileName).bufferedReader().use { it.readText() } val townList: List<String> = inputString.split("\n")
g52tjvyc6#
如何将文档路径应用于:
fun main(args: Array<String>) { val inputStream: InputStream = File("example.txt").inputStream() val inputString = inputStream.bufferedReader().use { it.readText() } println(inputString) }
6条答案
按热度按时间hts6caw31#
1.使用缓冲读取器
2.使用输入数据流
按行读取
读取所有行
3.直接使用文件
cfh9epnr2#
我认为最简单的编码方法是使用Kotlin和java.io.file。
a64a0gku3#
上面的答案都是基于KotlinJava的。下面是一个Kotlin Native读取文本文件的方法:
请参阅:https://github.com/JetBrains/kotlin-native/blob/master/samples/csvparser/src/csvParserMain/kotlin/CsvParser.kt
hzbexzde4#
Anisuzzaman的回答列出了几种可能性。
它们之间的主要区别在于文件是作为单个字符串读入内存,读入内存并拆分为多行,还是逐行读取。
显然,一次性将整个文件读入内存会占用更多的内存,因此除非真的有必要,否则应该避免这种情况。(文本文件可以变得任意大!)因此,使用
BufferedReader.useLines()
逐行处理通常是一种很好的方法。剩下的差别大多是历史性的,早期的Java版本使用
InputStream
&c,它不能正确区分字符和字节; Java 8增加了使用流更有效地逐行读取的方法(例如Files.lines()
)。最近,Kotlin增加了它自己的扩展函数(例如BufferedReader.useLines()
),这使得它更加简单。yqkkidmi5#
要读取文本文件,必须先创建该文件。在Android Studio中,您可以创建如下文本文件:
1)从垂直工具栏顶部选择“项目”打开项目“工具窗口”2)从“工具窗口”顶部的下拉菜单中,选择“Android”3)右键单击“应用程序”,然后选择“新建”-〉“文件夹”(旁边有绿色Android图标的那个)然后-〉“资产文件夹”4)在“资产”文件夹出现在“工具窗口”后右键单击它5)选择“新建”-〉“File”6)命名文件,如果是文本文件,则添加扩展名“.txt”;如果是WebView,则添加扩展名“.html”7)编辑文件或将文本剪切并粘贴到其中。该文件现在将显示在“工具窗口”中的“项目”文件下,您可以随时双击它进行编辑。
要访问此文件,请使用前缀“application.assets.”,后跟someFunction(fileName)。例如(在Kotlin中):
g52tjvyc6#
如何将文档路径应用于: