21.获取进程

用字符串写一段伪代码,然后写入一个java文件,再调用进程编译
//调用javac进程
Process p = Runtime.getRuntime().exec("javac Hello.java");

//调用java进程
Process p1 = Runtime.getRuntime().exec("java Hello");
示例代码
package com.java520.iodemo01;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;




public class PersonDemo 
{
    public static void main(String[] args) throws Exception 
    {
        //写文件
        writeFile();
        
        //获取进程并运行
        getProcess();
    }

    private static void getProcess() throws Exception {
        // TODO Auto-generated method stub
        //1.调用javac 进程来编译Hello.java
        Process p = Runtime.getRuntime().exec("javac Hello.java");
        
        //2.有可能编译出错,所以需要获取一下编译后的流来得知编译信息
        InputStream errorStream = p.getErrorStream();
        
        byte[] b = new byte[1024];
        int ln = -1;
        while ((ln = errorStream.read(b)) != -1){
            String str = new String(b,0,ln);
            System.out.println(str);
        }
        //3.关闭资源
        errorStream.close();
        
        //4.调用java进程来编译Hello.class
        Process pjava = Runtime.getRuntime().exec("java Hello");
        
        //5.获取java进程中的的流信息
        InputStream infoStream = pjava.getInputStream();
        byte[] bjava = new byte[1024];
        int ln1 = -1;
        while((ln1 = infoStream.read(bjava)) != -1){
            String str = new String(bjava,0,ln1);
            System.out.println(str);
        }
        
        //6.关闭资源
        infoStream.close();
        
        //7.删除文件 
        new File("Hello.java").delete();
        new File("Hello.class").delete();
    }

    private static void writeFile() throws Exception{
        // TODO Auto-generated method stub
        StringBuilder str = new StringBuilder();

        str.append("public class Hello{");
        str.append("public static void main(String[] args){");
        str.append("System.out.println(\"你是我天边最美的云彩\");");
        str.append("}");
        str.append("}");

        //创建输出对象
        File file = new File("Hello.java");

        //创建输出流
        OutputStream out = new FileOutputStream(file);

        //输出
        out.write(str.toString().getBytes());
        
        //关闭
        out.close();
    }
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 137,047评论 19 139
  • 残雪如被柳依眠 冬阳拂面暖心田 翘盼寒消春早归 如梭岁月尽流年 北方四月风微瑟 乍暖还寒艳阳天 江面冰排渐消融 桃...
    雪落重阳阅读 334评论 4 8
  • arguments对象 代表了所有的实参集合【类数组】 return 1.返回函数的运算结果 a) 如果函数里有...
    wn_Smile阅读 365评论 0 0
  • 723 押蒸韵 江畔金沙紫日升, 拉乌山上遇寒冰。 师兄来电询形况, 仿似春风信倍增。 车如长龙等通验, 悦尝瓜子...
    飞雪姐姐阅读 412评论 1 5
  • 《欢乐颂》开播伊始,剧情走势明朗,看到樊胜美和王柏川甜甜蜜蜜,小包总追安迪很欢乐,曲筱绡和赵医生没羞没臊,邱莹莹和...
    漫漫Chen阅读 776评论 0 11

友情链接更多精彩内容