Java修改指定文件夹下图片转移至另一文件夹并重命名

Java修改指定文件夹下图片转移至另一文件夹并重命名

  • 完整代码

自己电脑上文件夹里图片太多,且存在重复名称,在网上找了一下没找到合适的,就整合了一下代码,有问题欢迎提出

完整代码


import org.springframework.util.CollectionUtils;

import java.io.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;

public class FileStreamTest {

    /**
     * 文件路径
     */
    static String[] paths = {"/Users/syh/Desktop/test/"};

    /**
     * 输出路径
     */
    static String outputPath = "/Users/syh/Pictures/";

    /**
     * 文件重命名,可忽略此参数使用随机文件名称
     */
    static Integer num = 01;

    public static void main(String[] a) throws IOException {
        for (String path : paths) {
            // 获取指定文件夹下所有文件名称
            File f = new File(path);
            if (!f.exists()) {
                // 不存在就输出
                System.out.println(path + " not exists");
                continue;
            }
            // 获取文件
            List<String> pictureNames = getPictureNames(f);
            if (CollectionUtils.isEmpty(pictureNames)) {
                System.out.println(path + "文件夹下无图片");
                continue;
            }
            // 读取文件并写入指定目录
            for (String pictureName : pictureNames) {
                fileReadAndWrite(path, pictureName);
            }
        }

    }

    /**
     * 获取文件夹下所有图片名称
     *
     * @param f
     * @return
     */
    public static List<String> getPictureNames(File f) {
        List<String> fileNames = new ArrayList<>();
        //用数组接收
        File fa[] = f.listFiles();
        //循环遍历
        for (int i = 0; i < fa.length; i++) {
            //获取数组中的第i个
            File fs = fa[i];
            if (fs.isDirectory()) {
                //如果是目录就输出
                System.out.println(fs.getName() + " [目录]");
            } else {
                String name = fs.getName();
                // 这里只判断了jpg结尾格式,可自行添加
                if (name.endsWith(".jpg")) {
                    fileNames.add(name);
                } else {
                    //否则直接输出
                    System.out.println(fs.getName());
                }
            }
        }
        return fileNames;
    }

    /**
     * 文件读取及写入
     *
     * @param path        文件路径
     * @param pictureName 图片名称
     * @throws IOException
     */
    public static void fileReadAndWrite(String path, String pictureName) throws IOException {
        String filePath = path + pictureName;
        FileInputStream in = new FileInputStream(filePath);
        FileOutputStream out = new FileOutputStream(outputPath + num++ + ".jpg");
        BufferedInputStream bufferedIn = new BufferedInputStream(in);
        BufferedOutputStream bufferedOut = new BufferedOutputStream(out);
        byte[] by = new byte[1];
        while (bufferedIn.read(by) != -1) {
            bufferedOut.write(by);
        }
        bufferedOut.flush();
        bufferedIn.close();
        bufferedOut.close();
        // 删除原文件夹下文件
        File file = new File(filePath);
        if (file.isFile() && file.exists()) {
            file.delete();
        }
    }

    /**
     * 生成随机字符串
     *
     * @param length 字符串长度
     * @return
     */
    public static String getRandomString(int length) {
        String str = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
        Random random = new Random();
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < length; i++) {
            int number = random.nextInt(62);
            sb.append(str.charAt(number));
        }
        return sb.toString();

    }
}

你可能感兴趣的:(个人整理,java)