在application.properties文件中设置属性
antiVirusTempDir=D:/test
此路径必须是本地计算机真实存在目录
CheckVirus.validateNoVirus(sccbd0604Form.getFileSelect().getInputStream());
导入的文件流:sccbd0604Form.getFileSelect().getInputStream()
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class CheckVirus {
private static String tempDir = null;
static {
//路径
tempDir = ApplicationProperties.getProperty("antiVirusTempDir");
}
public static boolean validateNoVirus(InputStream is) throws FileNotFoundException, IOException {
OutputStream os = null;
File proof = null;
FileInputStream fis = null;
try {
if (tempDir != null) {
proof = File.createTempFile("checkVirus", ".tmp", new File(tempDir));
} else {
proof = File.createTempFile("checkVirus", ".tmp");
}
os = new BufferedOutputStream(new FileOutputStream(proof));
int c;
InputStream bis = new BufferedInputStream(is); // 念のため chắc ăn
while ((c = bis.read()) != -1) {
os.write(c);
}
os.flush();
LOG.info(MessageUtil.getMessage(CommonConstants.LGAZ2007_I,proof.getAbsoluteFile().getName()));
} finally {
if (os != null) os.close();
}
//アンチウィルスにファイルを削除させるため、ファイルを読み込む
//Vi bắt delete file tại unvirus nen sẽ đọc vao file
try {
fis = new FileInputStream(proof);
} catch (FileNotFoundException e) {
} finally {
if (fis != null) fis.close();
}
LOG.info(MessageUtil.getMessage(CommonConstants.LGAZ2008_I,Long.toString(wait)));
try {
Thread.sleep(wait);
} catch (InterruptedException e) {
}
boolean exist = (proof != null) && proof.exists();
if (exist) {
proof.delete();
LOG.info(MessageUtil.getMessage(CommonConstants.LGAZ2009_I));
} else {
LOG.warn(MessageUtil.getMessage(CommonConstants.LGAZ2010_W));
}
return exist;
}
}