注:本程序中没有考虑异常的处理.
写程序最好的方法就是先分析功能,然后把功能细化,把思路写下来,跟着思路去写,在写的时候突然把想到的也写进去,不断完善方法中的内容.
思路分析:主方法:
1.写一个静态的正则放到主方法外面.
2.创建一个文件夹的对象.
3.调用下面的方法.
定义一个功能方法:
1.将路径封装成File数组
2.遍历这个数组,找出文件夹(接着调用这个方法),然后与图片的正则匹配.
3.创建输入输出的管道.
4.关流.
static String regex = ".+\\.[j][a][v][a]";//正则表达式 用来判读是否是图片格式的文件
public static void main(String[] args) throws IOException {
File file = new File("G:\\test");//需要查找的文件夹
copyPhoto(file);
System.out.println("传输完成!");
}
private static void copyPhoto(File file) throws IOException { //复制图片的方法
File[] files = file.listFiles(); //将路径封装成File数组
for (File file2 : files) {//遍历这个数组
if (file2.isDirectory()) { //判断是否是文件夹
copyPhoto(file2); //是的话就继续调用这个方法
} else if (file2.getName().matches(regex)) { //不是的话就匹配是否是图片
BufferedInputStream bis=new BufferedInputStream(new FileInputStream(file2)) ;//创建输入的管道
byte[] buf = new byte[1024*20];//创建一个小数组
int lenght = 0;
BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream( //创建输出管道
"G:\\javaIO\\我的java文件\\" + file2.getName())); //图片会拷贝到这里
while ((lenght=bis.read(buf)) != -1) {
bos.write(buf, 0, lenght);
}
bos.close();
bis.close();
}
}
}