想实现一个这样的功能,有哪位高手能帮小弟我实现呢?满分奉下

想实现一个这样的功能,有谁能帮我实现呢?满分奉上递归遍历一个文件夹,获取该文件夹下所有图片尺寸为800*80

想实现一个这样的功能,有谁能帮我实现呢?满分奉上
递归遍历一个文件夹,获取该文件夹下所有图片尺寸为800*800,并且图片大小小于300K的图片。
并且把这些图片复制到一个份,在原有的名字基础上添加一些特殊标记。。
应该怎么实现呢?
[解决办法]
这个功能不难实现吧?给出获取图片宽高的代码:
ImageIcon icon = new ImageIcon(String url);
int width = icon.getIconWidth();
int height = img.getIconHeight();

[解决办法]
API里关于Image的类里应该有介绍的吧···我猜的···
[解决办法]
留个脚印,如果明早还没人帮你完成的话我上班的时候写。
[解决办法]

package com.djk.design.Test;

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;

import javax.imageio.ImageIO;

/**
 * 客户端测试方法
 * @author djk
 *
 */
public class PictureClient 
{
public static void main(String[] args) throws Exception 
{
//指定要复制的图片的后缀名
List<String> list = new ArrayList<String>();
list.add("jpg");
ValidatePicture validatePicture = new DjkValidatePictrue(list);
HandlePictrue handlePictrue = new DjkHandlePicture(validatePicture);
//指定源文件夹和目标文件假
handlePictrue.copyPictrue("D:/test", "E:/picture/");
}
}


/**
 * 校验图片接口包括
 * 1:图片的尺寸为800*800
 * 2:图片的大小小于300K
 * 3:得到指定路径下的所有图片路径
 * @author djk
 *
 */
interface ValidatePicture
{
/**
 * 检查图片的尺寸是否为800*800是返回true,不是返回false
 * @param path
 * @return
 */
boolean isSizeInRange(String path);

/**
 * 检查图片是否小于300K小于则返回true大于等于则返回false
 * @param path
 * @return
 */
boolean isSizeOk(String path);

/**
 * 得到这个文件下的所有的图片
 * @param path
 * @return
 */
List<String> getAllPiacturePath(String path);
}

/**
 * 图片处理接口包括
 * 1:
 * 2:复制符合条件的图片
 * 
 * @author djk
 *
 */
interface HandlePictrue
{
/**
 * 复制图片
 */
void copyPictrue(String source,String path) throws Exception;

}

/**
 * 校验实现类
 * @author djk
 *
 */
class DjkValidatePictrue implements ValidatePicture
{
private static List<String> list = new ArrayList<String>();

/**
 * 图片的后缀
 */
private List<String> pictureSuffix ;

public DjkValidatePictrue(List<String> pictureSuffix)
{
this.pictureSuffix = pictureSuffix;
}

@Override
public boolean isSizeInRange(String path) 
{
int height=0;
int weight = 0;
try {
InputStream is = new FileInputStream(new File(path));


BufferedImage bufferedImage = ImageIO.read(is);
 height = bufferedImage.getHeight();
 weight = bufferedImage.getWidth();
} catch (Exception e) {
}
return MyConstatn.PICTUREHEIGHT.getValue()==height&&MyConstatn.PICTUREWEIGHT.getValue()==weight?true :false;
}

@Override
public boolean isSizeOk(String path)
{
File file = new File(path);
long fileSize = file.length();
return fileSize<MyConstatn.PICTRUESIZE.getValue()?true:false;
}

/**
 * 递归得到文件夹下的所有图片路径
 */
@Override
public List<String> getAllPiacturePath(String path) 
{
File file = new File(path);
return getName(file);
}

public  List<String> getName(File file)
{
File [] fileList = file.listFiles();

for(File myFile : fileList)
{
if(myFile.isDirectory())
{
getName(myFile);
}else
{
//只要知道后缀的图片路径
String fileName = myFile.getName();
String lastName = fileName.substring(fileName.lastIndexOf(".")+1);

//如果图片的后缀为指定的后缀则复制
if(pictureSuffix.contains(lastName))
{
list.add(myFile.getAbsolutePath());

}

}

}

return list;
}
}

/**
 * 图片处理
 * @author djk
 *
 */
class DjkHandlePicture implements HandlePictrue
{
private ValidatePicture validatePicture;

public DjkHandlePicture(ValidatePicture validatePicture)
{
this.validatePicture = validatePicture;
}

/**
 * 复制符合条件的图片第一个参数表示符合图片的路径,第二个参数表示图片要复制的目标文件
 * @throws Exception 
 */
@Override
public void copyPictrue(String sourcePath,String path) throws Exception
{
List<String> list = validatePathPictrue(sourcePath);


if(list.size()>0)
{
File file = new File(path);
if(path.indexOf(".")!=-1)
{
throw new Exception("源路径错误");
}
if(!file.exists())
{
file.mkdirs();
}
}
//复制图片
for(String myList : list)
{

String pictureName = myList.substring(myList.lastIndexOf("\")+1);
InputStream is = new FileInputStream(new File(myList));

OutputStream os = new FileOutputStream(new File(path+pictureName));

byte [] buffer = new byte[1024];

int length = 0;
while((length = is.read(buffer))!=-1)
{
os.write(buffer, 0, length);
}
is.close();
os.close();
}
}

/**
 * 得到符合条件的图片路径
 * @return
 */
private List<String> validatePathPictrue(String sourcePath)
{
List<String> list = new ArrayList<String>();
List<String> allPictureList = validatePicture.getAllPiacturePath(sourcePath);
for(String picturePath: allPictureList)
{
if(validatePicture.isSizeInRange(picturePath)&&validatePicture.isSizeOk(picturePath))
{
list.add(picturePath);
}


}
return list;
}

}


enum MyConstatn
{
PICTUREHEIGHT(800),PICTUREWEIGHT(800),PICTRUESIZE(307200);
private int value;
private MyConstatn(int i)
{
this.value = i;
}
public int getValue() {
return value;
}
}



呵呵 lz我刚写的代码你参照下。。。。写的比较仓促里面还有写不足的地方,不过要完成你的功能应该是OK了。。。。