
상식을 뛰어넘는 버그
며칠동안 씨름 해도 도데체 왜 건너뛰는지 모르겠다
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) { } } } |
살려주세요...