package com.ray.image.bean.task;java
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;spring
import javax.annotation.Resource;apache
import org.apache.commons.io.FileUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.task.TaskExecutor;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;.net
import com.ray.image.bean.dao.ImageDao;
import com.ray.image.bean.pojo.Image;圖片
@Component
public class ImageTask
{
Logger logger = LoggerFactory.getLogger(ImageTask.class);get
@Autowired
ImageDao imageDao;input
@Resource(name = "taskExecutor")
private TaskExecutor taskExecutor;string
@Scheduled(cron = "0 0/1 * * * ?")
public void doTask()
{
logger.info("----------將一個文件夾下的圖片所有入庫的定時任務時任務----------");
File[] files = new File("D:\\RAY_IMAGE").listFiles();
addImageToDb(files);
}io
private void addImageToDb(File[] files)
{
for (final File file : files)
{
taskExecutor.execute(new Runnable()
{
public void run()
{
try
{
if (file.isDirectory())
{
// 1.是文件夾
File[] childFiles = new File(file.getAbsolutePath()).listFiles();
addImageToDb(childFiles);
} else
{
String fileName = file.getName();
long length = file.length();
String prefix = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase();
if ("jpeg".equals(prefix) || "jpg".equals(prefix) || "png".equals(prefix) || "gif".equals(prefix) || "bmp".equals(prefix))
{
FileUtils.copyFileToDirectory(file, new File("D:\\RAY_IMAGE2"), true);
InputStream input = new FileInputStream(file);
byte[] imageByte = new byte[input.available()];
input.read(imageByte);
input.close();ast
Image image = new Image();
image.setName(fileName);
image.setImage(imageByte);
image.setLength(length);
if (file.exists()) { if (file.delete()) { imageDao.addImage(image); } } } } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }); } } }