题目描述
A文件夹下面有多个子文件夹,然后子文件下后面有一些.jpg文件,要求把这些.jpg文件完全拷贝复制到B文件夹。
实现思路
先遍历循环A文件夹下的文件,然后找到符合.jpg的文件,放到一个列表中,然后再把列表中的jpg文件放到B文件夹上。
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.nio.file.Files;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;public class Picture {private static LinkedList<File> fileQueue= new LinkedList<>();private final String aPath="C:\\Users\\m088163\\Pictures";private final String bPath="D:\\temp";/*** 将源文件夹下所有的.jpg文件找到,并存在fileQueue 列表中。* @param path 需要查找文件的路径名* @param subStr 匹配的文件类型*/public void FindJpg(String path,String subStr){File file=new File(path);File[] files=file.listFiles();for(int i=0;i<files.length;i++){if(files[i].isDirectory()){FindJpg(files[i].getAbsolutePath(),subStr);}if(files[i].getAbsolutePath().contains(subStr)){fileQueue.add(files[i]);}}}/*** 将fileQeueue中的jpg文件存在目标文件夹。* @param path* @throws Exception*/public void moveJpg(String path) throws Exception{String myPath="";File newFile;for(File files:fileQueue){myPath=path+"\\";myPath+=files.getName();System.out.println(files.getName());newFile=new File(myPath);if(newFile.exists()){System.out.println("创建文件失败"+newFile+"失败,目标文件已经存在");}if(!newFile.getParentFile().exists()){System.out.println("文件的根目录不存在,创建根目录");newFile.getParentFile().mkdir();}copyfile(files.getAbsoluteFile(),newFile);}}/*** 写入文件操作* @param fromDest* @param toDest* @throws Exception*/public void copyfile(File fromDest,File toDest ) throws Exception{FileInputStream is =new FileInputStream(fromDest);FileOutputStream os =new FileOutputStream(toDest);byte[] b =new byte[1024];int temp=0;while((temp=is.read(b))!=-1){os.write(b,0,temp);}is.close();os.close();}public static void main(String[] args) {Picture picture = new Picture();picture.FindJpg(picture.aPath, ".jpg");try {picture.moveJpg(picture.bPath);} catch (Exception e) {e.printStackTrace();}}
}
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.nio.file.Files;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;public class Picture {private static LinkedList<File> fileQueue= new LinkedList<>();private final String aPath="C:\\Users\\m088163\\Pictures";private final String bPath="D:\\temp";/*** 将源文件夹下所有的.jpg文件找到,并存在fileQueue 列表中。* @param path 需要查找文件的路径名* @param subStr 匹配的文件类型*/public void FindJpg(String path,String subStr){File file=new File(path);File[] files=file.listFiles();for(int i=0;i<files.length;i++){if(files[i].isDirectory()){FindJpg(files[i].getAbsolutePath(),subStr);}if(files[i].getAbsolutePath().contains(subStr)){fileQueue.add(files[i]);}}}/*** 将fileQeueue中的jpg文件存在目标文件夹。* @param path* @throws Exception*/public void moveJpg(String path) throws Exception{String myPath="";File newFile;for(File files:fileQueue){myPath=path+"\\";myPath+=files.getName();System.out.println(files.getName());newFile=new File(myPath);if(newFile.exists()){System.out.println("创建文件失败"+newFile+"失败,目标文件已经存在");}if(!newFile.getParentFile().exists()){System.out.println("文件的根目录不存在,创建根目录");newFile.getParentFile().mkdir();}copyfile(files.getAbsoluteFile(),newFile);}}/*** 写入文件操作* @param fromDest* @param toDest* @throws Exception*/public void copyfile(File fromDest,File toDest ) throws Exception{FileInputStream is =new FileInputStream(fromDest);FileOutputStream os =new FileOutputStream(toDest);byte[] b =new byte[1024];int temp=0;while((temp=is.read(b))!=-1){os.write(b,0,temp);}is.close();os.close();}public static void main(String[] args) {Picture picture = new Picture();picture.FindJpg(picture.aPath, ".jpg");try {picture.moveJpg(picture.bPath);} catch (Exception e) {e.printStackTrace();}}
}