面试题答案
一键面试- 优化策略
- 逐行读取:避免一次性将整个大文件读入内存。对于文本文件,可以按行读取,处理完一行后再读取下一行。
- 使用缓冲区:设置合适大小的缓冲区,减少系统调用次数,提高读取效率。
- 及时释放资源:确保在使用完文件流后,及时关闭流以释放资源。
- 关键代码片段示例
import java.io.BufferedReader
import java.io.FileReader
import java.io.IOException
fun processLargeFile(filePath: String) {
try {
BufferedReader(FileReader(filePath)).use { br ->
var line: String?
while (br.readLine().also { line = it } != null) {
// 处理每一行数据
processLine(line)
}
}
} catch (e: IOException) {
e.printStackTrace()
}
}
fun processLine(line: String?) {
// 这里写具体的数据处理逻辑,比如解析特定格式的数据
if (line != null) {
// 示例:假设特定格式为逗号分隔,解析第一个元素
val parts = line.split(',')
if (parts.isNotEmpty()) {
val firstPart = parts[0]
println("Processed: $firstPart")
}
}
}
在上述代码中:
BufferedReader
结合FileReader
实现按行读取文件,BufferedReader
提供了缓冲区功能。use
函数确保BufferedReader
在使用完毕后自动关闭,及时释放资源。processLine
函数中示例了简单的数据处理逻辑,根据特定格式(这里假设为逗号分隔)对每行数据进行处理。