文件处理类

这段代码主要用于遍历指定文件夹下的所有.jpg图片,复制并重命名到目标文件夹。程序首先获取源目录下的所有文件,然后递归遍历子目录,找到所有图片文件并进行复制操作,同时修改文件名。在复制过程中,使用BufferedImage处理图片并将其写入新的目的地。此程序适用于需要批量处理图片文件的场景。
摘要由CSDN通过智能技术生成
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;
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值