正序
fun readTxt(path: String): String {
var str = ""
var isr: InputStreamReader? = null
var br: BufferedReader? = null
try {
val urlFile = File(path)
isr = InputStreamReader(FileInputStream(urlFile), "UTF-8")
br = BufferedReader(isr)
var mimeTypeLine: String? = null
while (br.readLine().also { mimeTypeLine = it } != null) {
if (mimeTypeLine!!.contains("token")) {
var leng = mimeTypeLine!!.indexOf("token")
var size = mimeTypeLine!!.substring(leng, mimeTypeLine!!.length).length
if (size >= 134) {
str = mimeTypeLine!!.substring(leng, leng + 134)
break
} else {
str = mimeTypeLine!!.substring(leng, mimeTypeLine!!.length)
}
} else {
if (str.isNotEmpty()) {
str += mimeTypeLine!!.substring(0, 134 - str.length)
break
}
}
}
} catch (e: Exception) {
e.printStackTrace()
LogUtil.e(LogUtil.TAG, e.message!!)
} finally {
if (isr != null) {
try {
isr.close()
} catch (e: IOException) {
e.printStackTrace()
}
}
if (br != null) {
try {
br.close()
} catch (e: IOException) {
e.printStackTrace()
}
}
LogUtil.debug(str.substring(6, str.length))
return str.substring(6, str.length)
}
}
倒序
fun reservedToken(path: String): String {
var str = ""
var fileRead: RandomAccessFile? = null
try {
fileRead = RandomAccessFile(File(path), "r")
var length = fileRead.length()
val start: Long = fileRead.filePointer
var nextend: Long = start + length - 1
fileRead.seek(nextend)
var c = -1
while (nextend > start) {
c = fileRead.read()
if (c === 10 || c === 13) {
var line = fileRead.readLine()
if (line != null) {
if (line!!.contains("token")) {
var leng = line!!.indexOf("token")
var size = line!!.substring(leng, line!!.length).length
if (size >= 134) {
str = line!!.substring(leng, leng + 134)
break
} else {
str = line!!.substring(leng, line!!.length)
}
} else {
if (str.isNotEmpty()) {
str += line!!.substring(0, 134 - str.length)
break
}
}
}
nextend--
}
nextend--
fileRead.seek(nextend)
if (nextend == 0L) {
return ""
}
}
} catch (e: Exception) {
e.printStackTrace()
LogUtil.debug(e.message!!)
} finally {
if (fileRead != null) {
try {
fileRead.close()
} catch (e: IOException) {
e.printStackTrace()
}
}
LogUtil.debug(str.substring(6, str.length))
return str.substring(6, str.length)
}
}
注意:如果你使用的kotlin代码不建议使用上面的方法,直接使用File(“本地文件路径”).readLines()返回的是List集合,使用该方法比上面的速度快很多。如果倒序查找就用File(“本地文件路径”).readLines().reversed()。