Java調(diào)用外部程序并獲取返回值

2010-10-15 13:30:30來(lái)源:作者:

  話說,當(dāng)初一直不明白公司郵箱服務(wù)器是怎么實(shí)現(xiàn)郵件病毒掃描的,因?yàn)楫?dāng)時(shí)沒能理解郵件的結(jié)構(gòu),其實(shí)郵件是一個(gè)文件夾郵件里的附件也會(huì)放在這個(gè)文件里,只不過他們間用特殊的分界符隔開,也就是傳說中的規(guī)則,然后

  話說,當(dāng)初一直不明白公司郵箱服務(wù)器是怎么實(shí)現(xiàn)郵件病毒掃描的,因?yàn)楫?dāng)時(shí)沒能理解郵件的結(jié)構(gòu),其實(shí)郵件是一個(gè)文件夾郵件里的附件也會(huì)放在這個(gè)文件里,只不過他們間用特殊的分界符隔開,也就是傳說中的規(guī)則,然后用如下代碼調(diào)用外部的殺毒軟件,根據(jù)殺毒軟件掃到毒和沒掃到毒返回的結(jié)果不一樣,再判斷,說到底還是殺毒軟件的功勞。

  還有那垃圾郵件,當(dāng)初也不明白他是怎么差別的,這個(gè)有點(diǎn)意思,有評(píng)分制的方法,就是和他的一個(gè)垃圾庫(kù)對(duì)比,然后有這個(gè)詞,有這個(gè)網(wǎng)址加多少分,當(dāng)然沒說的這么簡(jiǎn)單,只是為了說明這種機(jī)制。然后把得出的總分和設(shè)定的分比較來(lái)看一郵件是不是垃圾郵件,有點(diǎn)類似復(fù)合特征碼哦,呵呵,人類的智慧偉大吧。

  package com.cmd;

  import java.lang.*;

  import java.io.*;

  public class Process {

  public static void main(String[] args) {

  java.lang.Process process = null;

  try {

  process = Runtime.getRuntime().exec("net user");

  ByteArrayOutputStream resultOutStream = new ByteArrayOutputStream();

  InputStream errorInStream = new BufferedInputStream(process.getErrorStream());

  InputStream processInStream = new BufferedInputStream(process.getInputStream());

  int num = 0;

  byte[] bs = new byte[1024];

  while((num=errorInStream.read(bs))!=-1){

  resultOutStream.write(bs,0,num);

  }

  while((num=processInStream.read(bs))!=-1){

  resultOutStream.write(bs,0,num);

  }

  String result=new String(resultOutStream.toByteArray());

  System.out.println(result);

  errorInStream.close(); errorInStream=null;

  processInStream.close(); processInStream=null;

  resultOutStream.close(); resultOutStream=null;

  } catch (IOException e) {

  e.printStackTrace();

  }finally{

  if(process!=null) process.destroy();

  process=null;

  }

  }

關(guān)鍵詞:Java