首先,你要檢查什麼樣的API並已安裝的防病毒軟件提供。
如果沒有提供(如AVG API),那麼你必須如下使用任何Java API:
public void scanFile(byte[] fileBytes, String fileName)
throws IOException, Exception {
if (scan) {
AVClient avc = new AVClient(avServer, avPort, avMode);
if (avc.scanfile(fileName, fileBytes) == -1) {
throw new VirusException("WARNING: A virus was detected in
your attachment: " + fileName + "<br>Please scan
your system with the latest antivirus software with
updated virus definitions and try again.");
}
}
}
如果沒有Java API通過安裝防病毒軟件提供,那麼你仍然可以調用它使用命令行,如下:
String[] commands = new String[5];
commands[0] = "cmd";
commands[1] = "/c";
commands[2] = "C:\\Program Files\\AVG\\AVG10\\avgscanx.exe";
commands[3] = "/scan=" + filename;
commands[4] = "/report=" + virusoutput;
Runtime rt = Runtime.getRuntime();
Process proc = rt.exec(commands);
有供您參考一篇有趣的文章:實現JEE應用
希望這有助於防病毒文件掃描你。
標記爲這主要是基於觀點的,但我建議選項#2,從你的應用程序作爲一個孩子推出AV過程,然後檢查一下孩子的退出代碼報告(如:'0' =乾淨,'1' =受感染的或其他的 - 檢查文檔)等等。 – ray
@ray我發現這個建議:「從應用的角度來看,你可以創建一個代理服務器,在那裏你可以安裝殺毒軟件,上傳文件到該服務器,掃描,並傳送到目標服務器」 但是,爲什麼我們需要使用一些新的服務器? – zam
我想你能做到這一點,如果你有基礎設施和知識來正確設置它,但如果你在你的服務器上安裝的AV,應用程序可以對新文件作爲子進程啓動AV。這看起來不簡單嗎? – ray