java导入文件的病毒检测功能

在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;
	}
}




  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值