You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Windows系统下用Kotlin(Android Studio)清除控制台

在Windows下的Kotlin控制台程序中清除控制台的方法

方法一:调用Windows系统cls命令(推荐)

直接通过Kotlin执行系统命令清除控制台,无需额外依赖,在Windows环境下稳定有效:

fun clearConsole() {
    // 启动命令提示符执行cls命令,inheritIO()让操作同步到当前控制台
    ProcessBuilder("cmd.exe", "/c", "cls")
        .inheritIO()
        .start()
        .waitFor() // 等待命令执行完成
}

调用该函数后,控制台会立即被清空。cmd.exe /c cls的作用是启动命令提示符、执行清空命令后自动退出,inheritIO()确保命令效果直接作用于当前程序的控制台窗口。

方法二:使用ANSI转义序列(需控制台支持)

Windows 10及以上版本的控制台支持VT100虚拟终端,可通过输出ANSI转义序列清空控制台:

fun clearConsoleWithAnsi() {
    // 输出转义序列:光标移至左上角 + 清空屏幕
    print("\u001b[H\u001b[2J")
    // 强制刷新输出流,确保转义序列立即生效
    System.out.flush()
}

若控制台默认不支持VT100,需先开启虚拟终端支持(需引入JNA依赖):

  1. 在项目build.gradle中添加依赖:
dependencies {
    implementation 'net.java.dev.jna:jna:5.13.0'
    implementation 'net.java.dev.jna:jna-platform:5.13.0'
}
  1. 添加开启虚拟终端的代码:
import com.sun.jna.Library
import com.sun.jna.Native
import com.sun.jna.Pointer

interface Kernel32 : Library {
    companion object {
        const val STD_OUTPUT_HANDLE = -11
        const val ENABLE_VIRTUAL_TERMINAL_PROCESSING = 0x0004
        val INSTANCE: Kernel32 = Native.load("kernel32", Kernel32::class.java)
    }

    fun GetStdHandle(nStdHandle: Int): Pointer?
    fun GetConsoleMode(hConsoleHandle: Pointer?, lpMode: IntArray): Boolean
    fun SetConsoleMode(hConsoleHandle: Pointer?, dwMode: Int): Boolean
}

fun enableVirtualTerminalSupport() {
    val handle = Kernel32.INSTANCE.GetStdHandle(Kernel32.STD_OUTPUT_HANDLE)
    val mode = IntArray(1)
    if (Kernel32.INSTANCE.GetConsoleMode(handle, mode)) {
        Kernel32.INSTANCE.SetConsoleMode(handle, mode[0] or Kernel32.ENABLE_VIRTUAL_TERMINAL_PROCESSING)
    }
}

在程序启动时调用enableVirtualTerminalSupport(),之后即可用ANSI转义序列方式清空控制台。

内容的提问来源于stack exchange,提问作者Ali Farhad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 17:56:05