상식을 뛰어넘는 버그

며칠동안 씨름 해도 도데체 왜 건너뛰는지 모르겠다

contains("OnPlayerJoined") 해도 똑같은 문제 발생


전체 소스

fun main(args: Array<String>) {
    Thread {
       var previous = ""
        var line = 0
        val file = File("C:\\Users\\cloud\\AppData\\LocalLow\\VRChat\\VRChat\\output_log_20-00-45.txt")
        while (true) {
            val result = tail2(file, 3)
            if (result != null) {
                if (previous != result.trim()) {
                    line++

                    previous = result.trim()
                    when (result) {
                        in "OnPlayerJoined" -> {
                            println("OnPlayerJoined $line $previous")
                            //log(previous.replace(Regex(".*OnPlayerJoined"), ""))
                        }
                        in "OnPlayerLeft" -> {
                            println("OnPlayerLeft $line $previous")
                            //log(previous.replace(Regex(".*OnPlayerLeft"), ""))
                        }
                        in "Unregistering" -> {
                            println("Unregistering $line $previous")
                            //log(previous.replace(Regex(".*OnPlayerLeft"), ""))
                        }
                        else -> {
                            println("$line $previous")
                        }
                    }
                }
                /*if (previous in "OnPlayerJoined" || previous in "OnPlayerLeft"){
                println(previous)
            } else {
                //log(previous)
            }*/

                /*if (previous.contains("[Behaviour] OnPlayerJoined")){
                log(previous)
            }*/
                //println(previous)
            } else {
                log("값이 null.")
            }
            sleep(16)
        }
    }.start()

fun tail2(file: File?, lines: Int): String? {
    var fileHandler: RandomAccessFile? = null
    return try {
        fileHandler = RandomAccessFile(file, "r")
        val fileLength = fileHandler.length() - 1
        val sb = StringBuilder()
        var line = 0
        for (filePointer in fileLength downTo -1 + 1) {
            fileHandler.seek(filePointer)
            val readByte = fileHandler.readByte().toInt()
            if (readByte == 0xA) {
                if (filePointer < fileLength) {
                    line = line + 1
                }
            } else if (readByte == 0xD) {
                if (filePointer < fileLength - 1) {
                    line = line + 1
                }
            }
            if (line >= lines) {
                break
            }
            sb.append(readByte.toChar())
        }
        sb.reverse().toString()
    } catch (e: FileNotFoundException) {
        e.printStackTrace()
        null
    } catch (e: IOException) {
        e.printStackTrace()
        null
    } finally {
        if (fileHandler != null) try {
            fileHandler.close()
        } catch (e: IOException) {
        }
    }
}

살려주세요...