第一,通过JAVA打开某个EXE文件后,怎样知道这个文件什么时候运行结束,我想在这个文件运行结束后马上删除.   第二,用JAVA打开一个EXE文件后,马上把这个文件给删除了,因为这个EXE文件已经放到内存里,只不过是windows系统锁住了正在运行的文件,所以即使把文件马上删除了也不会响影到文件的正确运行.

解决方案 »

  1.   

    wygrz19861006,可以说一点源代码吗?
      

  2.   

    可以给点源代码吗? sunrain_gao(太阳雨)
      

  3.   

    呵呵,这个家伙是否在制作病毒程序。god bless
      

  4.   

    不是病毒程序,刚好相返,是想做一个用JAVA加密文件的系统~~~~
      

  5.   

    try {
       
              String scmd="./someexe.exe ";
              Process cmd = Runtime.getRuntime().exec(scmd);
              cmd.waitFor();///<-------------------------------等待结束
            }catch (InterruptedException ex1) {
              return false;
            }
            catch (IOException ex) {
              return false;
            }
      

  6.   

    从原理上说,第二种不太可能,exe文件并不是执行就全部加载到内存
      

  7.   

    第二种可以做到,不过用java我不会。
      

  8.   

    谢谢zhblue(歪嘴鱼),还有没有其它的答案啊~
      

  9.   

    EXE文件不是一运行就马上把全部的东西放到内存里了吗??
      

  10.   

    第二个不太可能,因为并不是你想象的那么简单。举个我平时碰到的例子,平时我会“快速删除”Oracle,但是里面的一个oci.dll即使我关掉了所有oracle的进程,它仍然被写保护,无法移动删除。何况,你的exe还在运行中
      

  11.   

    第一种方法关键还是要看exe文件什么时候运行结束,可以用isLive()方法判断.exe文件是否已经执行完毕,若完毕则删除
      

  12.   

    xjlz0001(星际浪子0001),不是用waitFor()来等待线程结束吗,结束了就删除它,为什么用islive()呢
      

  13.   

    import java.io.*;/**
     * Created by IntelliJ IDEA.
     * @author franckjun
     * User: user
     * Date: 2005-11-7
     * Time: 15:55:38
     * To change this template use File | Settings | File Templates.
     */
    public class test {
        public static void main(String[] args){
            Runtime ce = Runtime.getRuntime();
            File file = new File("要删除的文件");
            Process pro ;
            InputStream in ;
            try {
                pro = ce.exec("打开要删除的文件");
                in = pro.getInputStream();
                while(in.read() != -1){            }
                file.delete();        } catch (Exception e) {
                e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
            }
        }
    }
      

  14.   

    非常感谢franckjun()的回复,我先测试一下~~~~