zoukankan      html  css  js  c++  java
  • kotlin调用终端命令

    /**
     * 调用系统命令行中的命令.以List<String>的方式输入命令的各个参数.
     * 命令执行完毕后会以String?传回结果,不会在终端显示
     * 默认在当前目录中执行,超时时间为60秒
     */
    fun runCommand(
        cmd: List<String>,
        workingDir: File = File("."),
        timeoutAmount: Long = 60L,
        timeUnit: TimeUnit = TimeUnit.SECONDS
    ): String? = runCatching {
        ProcessBuilder(cmd)
            .directory(workingDir)
            .redirectErrorStream(true)
            .start().also { it.waitFor(timeoutAmount, timeUnit) }
    // jdk17之后这样写
            .inputReader().readText()
    // jdk17之前这样写
    //        .inputStream.bufferedReader().readText()
    }.onFailure { it.printStackTrace() }.getOrNull()
    
    
    /**
     * 调用系统命令行中的命令.以List<String>的方式输入命令的各个参数.
     * 命令执行完毕后会以String?传回结果,不会在终端显示
     * 在当前目录中执行,超时时间为60秒.
     * 若要更改目录和时间,请使用List<String>的方式传入
     */
    fun runCommand(vararg cmd: String): String? = runCommand(listOf(*cmd))
    
    //不推荐这样使用,程序遇到错误会直接退出.
    fun String.runCommand(): String = Runtime.getRuntime().exec(this).inputStream.bufferedReader().readText()
    
  • 相关阅读:
    css3 动画+动画库
    垃圾回收 及 内存泄漏
    做菜体会
    微信小程序
    微信公众号2
    JavaScript 原生事件
    Bootstrap框架
    Less 和 Sass
    HTML标签总结
    表单元素
  • 原文地址:https://www.cnblogs.com/soclear/p/15690833.html
Copyright © 2011-2022 走看看