开发者社区> 问答> 正文

如何使用Java11在远程计算机中创建文件/目录

我想知道如何使用Java11在远程计算机中创建文件/目录?

我确实尝试使用:

process = Runtime.getRuntime()
         .exec("ssh root@" + hostname + " 'mkdir -p "+mdbDir+"'")
         .wait() or waitFor();

但是即使使用wait(),我也遇到了异常

java.lang.IllegalThreadStateException: process has not exited

请让我知道可以做什么。

展开
收起
垚tutu 2019-12-04 16:36:13 1171 0
1 条回答
写回答
取消 提交回答
  • #include

    您可以使用以下代码来获取进程退出代码和错误消息:

    public class SshDirMaker {
        public static void main(String[] args) throws IOException, InterruptedException {
            String hostname = "host";
            String mdbDir = "/mydir";
    
            Process process = Runtime.getRuntime().exec("ssh root@" + hostname + " 'mkdir -p " + mdbDir + "'");
            process.waitFor();
            System.out.println("exit code " + process.exitValue());
            System.out.println("error message" + readInputStreamAsString(process.getErrorStream()));
        }
    
        private static String readInputStreamAsString(InputStream in) throws IOException {
            BufferedInputStream bis = new BufferedInputStream(in);
            ByteArrayOutputStream buf = new ByteArrayOutputStream();
            int result = bis.read();
            while (result != -1) {
                byte b = (byte) result;
                buf.write(b);
                result = bis.read();
            }
            return buf.toString();
        }
    }
    
    

    .waitFor()如果需要等待进程终止,则应使用。

    2019-12-04 16:36:26
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载