OSS列举文件

本文介绍了一种从阿里云OSS指定文件夹下读取并解析.txt文件为Java对象的方法。通过使用OSSClient和ListObjectsRequest,可以遍历并处理所有文件,最终将数据转换为DataExportDto对象集合。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 列举文件
  • 解析OSS中指定文件夹下 .txt 文件为Java对象
  • 注意 : ObjectListing 列表中会有一个文件为null ,注意从集合中清除
 /**
     * 文件列举
     * 查看OSS指定目录下所有文件
     * 并将文件解析为Java对象
     * @param ossClient  OSS客户端
     * @param bucketName 实例名
     * @param prefix     文件夹
     *
     * @return 文件对象集合
     */
   private List<DataExportDto> getDtoListFromOSS(OSSClient ossClient, String bucketName, String prefix) {
        InputStream inputStream = null;
        List<DataExportDto> list = new ArrayList<>();
        try {
            // 构造ListObjectsRequest请求
            ListObjectsRequest listObjectsRequest = new ListObjectsRequest(bucketName);
            // 设置prefix参数来获取fun目录下的所有文件。
            listObjectsRequest.setPrefix(prefix);
            // 递归列出json目录下的所有文件
            ObjectListing listing = ossClient.listObjects(listObjectsRequest);
            // 遍历所有 .json 文件
            if (listing != null) {
                for (OSSObjectSummary objectSummary : listing.getObjectSummaries()) {
                    //根据储存位置+储存实例名 解析读取文件并解析
                    OSSObject object = ossClient.getObject(objectSummary.getBucketName(), objectSummary.getKey());
                    inputStream = object.getObjectContent();
                    byte[] content = new byte[1024];
                    int len = 0;
                    int temp;
                    while ((temp = inputStream.read()) != -1) {
                        content[len] = (byte) temp;
                        len++;
                    }
                    String dataExportDtoJson = new String(content, 0, len);
                    DataExportDto dataExportDto = JSONObject.parseObject(dataExportDtoJson, DataExportDto.class);
                    list.add(dataExportDto);
                }
            }
        } catch (Exception e) {
            logger.error("接口调用异常getDtoListFromOSS", e);
            return null;
        } finally {
            try {
                if (inputStream != null) {
                    inputStream.close();
                }
            } catch (IOException e) {
                logger.error("关流异常", e);
            }
        }
        list.remove(null);
        return list;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值