android 正序、倒序查找本地文件其中的字符串

正序

    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()。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值