import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List; import javax.imageio.ImageIO; public class Copy { /** * 遍历文件夹下的所有图片文件,并复制到指定文件夹下 */ //static String srcfile = "F:/摄像头图片/base64-image-bak";//源目录 static String srcfile = "F:/images";//源目录 static String filetype = ".jpg";//关键字 static List<File> flist = new ArrayList();//存放遍历的文件 public static void main(String[] args) { File file = new File(srcfile); File[] list =file.listFiles();//源文件夹 List<File> flist1 = new ArrayList(); for(int i=0;i<list.length;i++){ flist1.add(list[i]); } searchDirectory(flist1); for(File f : flist){ FixFileName(f,""); } //wFile(flist,filetype); System.out.println("复制完成"); } public static void searchDirectory(List<File> list){ List<File> dlist0 = new ArrayList();//一级目录 List<File> dlist1 = new ArrayList();//一级目录下的子目录 //遍历的文件夹,将文件和文件夹分类 for(File file: list){ if(file.isDirectory()){ dlist0.add(file); }else{ flist.add(file);//文件存放到文件list中 } } /** * 遍历子文件夹 * 递归调用该方法,把目录和文件分开 * */ if(dlist0.size()>0||!dlist0.isEmpty()){ for(int i=0;i<dlist0.size();i++){ File[] list0 = dlist0.get(i).listFiles(); for(int j=0;j<list0.length;j++){ dlist1.add(list0[j]); } } searchDirectory(dlist1); } return ; } //读写文件 public static void wFile(List<File> flist,String filetype){ for(File file :flist){ if(file.isFile()){ //包含关键字 if(file.toString().toLowerCase().contains(filetype.toLowerCase())){ //把文件写到指定 的文件夹中 try { BufferedImage image = ImageIO.read(new File(file.toString())); //指定要复制的路径 ImageIO.write(image, "jpg", new File("F:/images/"+file.getName()+".jpg")); } catch (IOException e) { e.printStackTrace(); } } } } } /** * 通过文件路径直接修改文件名 * * @param filePath 需要修改的文件的完整路径 * @param newFileName 需要修改的文件的名称 * @return */ private static String FixFileName(File f, String newFileName) { /*File f = new File(filePath); if (!f.exists()) { // 判断原文件是否存在(防止文件名冲突) return null; }*/ String filePath = f.getPath(); String name = f.getName(); System.out.println("名称:"+name); newFileName = name.substring(0,name.lastIndexOf('.')); newFileName = newFileName.trim(); if ("".equals(newFileName) || newFileName == null) // 文件名不能为空 return null; String newFilePath = null; if (f.isDirectory()) { // 判断是否为文件夹 newFilePath = filePath.substring(0, filePath.lastIndexOf("/")) + "/" + newFileName; } else { newFilePath = filePath.substring(0, filePath.lastIndexOf("\\")) + "\\" + newFileName; //+ filePath.substring(filePath.lastIndexOf(".")); } File nf = new File(newFilePath); try { f.renameTo(nf); // 修改文件名 } catch (Exception err) { err.printStackTrace(); return null; } return newFilePath; } }
文件处理类
最新推荐文章于 2024-09-27 17:36:53 发布
这段代码主要用于遍历指定文件夹下的所有.jpg图片,复制并重命名到目标文件夹。程序首先获取源目录下的所有文件,然后递归遍历子目录,找到所有图片文件并进行复制操作,同时修改文件名。在复制过程中,使用BufferedImage处理图片并将其写入新的目的地。此程序适用于需要批量处理图片文件的场景。
摘要由CSDN通过智能技术生成