You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java如何批量读取文件夹内图片并生成二维字节数组

实现方案

你可以按以下步骤实现需求:

  • 先遍历目标文件夹过滤出所有图片文件
  • 封装单文件转字节数组的通用逻辑,建议用JDK自带的Files.readAllBytes简化流操作,避免手动关流漏处理异常的问题
  • 用动态列表先存储读取到的单图字节数组,最后转成你需要的二维字节数组结构

完整实现代码

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.util.ArrayList;
import java.util.List;

public class ReadAllImages {
    public static void main(String[] args) throws IOException {
        // 1. 指定图片文件夹路径
        File imgDir = new File("D:\\swim");
        List<byte[]> imgByteList = new ArrayList<>();

        // 2. 遍历文件夹过滤图片文件,可根据需要调整支持的后缀
        File[] imgFiles = imgDir.listFiles(file -> {
            String fileName = file.getName().toLowerCase();
            return fileName.endsWith(".png") || fileName.endsWith(".jpg") || fileName.endsWith(".jpeg");
        });

        if (imgFiles == null) {
            throw new RuntimeException("目标文件夹不存在或不是有效目录");
        }

        // 3. 逐个读取图片存为字节数组
        for (File imgFile : imgFiles) {
            byte[] imgBytes = Files.readAllBytes(imgFile.toPath());
            imgByteList.add(imgBytes);
        }

        // 4. 转成你需要的二维字节数组结构 A[图片序号][对应图片字节数组]
        byte[][] result = imgByteList.toArray(new byte[0][]);

        // 测试输出:打印第1张图片的字节数组
        // System.out.println(Arrays.toString(result[0]));
    }
}

说明

  • 二维数组result的第一维下标就是图片序号,从0开始,顺序和文件夹遍历的文件顺序一致
  • 如果你需要固定的排序规则,可以对imgFiles数组先做排序处理再读取
  • 单张图片大小如果超过2GB(int最大值)会存在长度精度问题,普通场景下无需考虑

内容的提问来源于stack exchange,提问作者Saso

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.18 06:54:03