查询阿里云存储文件并导出excle 保存到本地

本文涉及的产品
云服务器 ECS,u1 2核4GB 3个月
云服务器 ECS,每月免费额度200元 3个月
云服务器 ECS,u1 4核16GB 1个月
简介:

说明:怎么样读取阿里云服务器的文件并导出到本地excle 来统计阿里云存放多少文件呢?下面的代码详细给你介绍:



package util;


import java.io.File;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

import java.io.RandomAccessFile;

import java.util.List;

import java.util.Map;


import jxl.Workbook;

import jxl.write.Label;

import jxl.write.WritableSheet;

import jxl.write.WritableWorkbook;

import jxl.write.WriteException;

import jxl.write.biff.RowsExceededException;


import com.aliyun.openservices.ClientConfiguration;

import com.aliyun.openservices.oss.OSSClient;

import com.aliyun.openservices.oss.model.ListObjectsRequest;

import com.aliyun.openservices.oss.model.OSSObject;

import com.aliyun.openservices.oss.model.OSSObjectSummary;

import com.aliyun.openservices.oss.model.ObjectListing;

import com.aliyun.openservices.oss.model.ObjectMetadata;


/**

 * Created by helenon 2017/1/5.

 */

public class Test {

private static final String ACCESS_ID = "";//阿里云服务器ACCESS_ID 

private static final String ACCESS_KEY = "";//阿里云服务器ACCESS_KEY 

private static final String OSS_ENDPOINT = "http://oss.aliyuncs.com/";

private static final String BUCKET_NAME = ";//阿里云服务器BUCKET_NAME 


public static void main(String[] args)  {

pageObject(); 

}

//分页获取所有Object,每页maxKeys条Object。

public static void pageObject() {

// 可以使用ClientConfiguration对象设置代理服务器、最大重试次数等参数。

ClientConfiguration config = new ClientConfiguration();

OSSClient ossClient = new OSSClient(OSS_ENDPOINT, ACCESS_ID, ACCESS_KEY, config);

final int maxKeys = 1000;//最大记录

String nextMarker = null;

File file=new File("D:/helen.xls");//excle 存放路径

WritableWorkbook workbook =null;

WritableSheet sheet=null;

        OutputStream os = null;

        ObjectListing listing=null;

    int i = 0;

double sumSize = 0;//总大小

try {

os = new FileOutputStream(file);

workbook = Workbook.createWorkbook(os);

   //创建新的一页

   sheet = workbook.createSheet("First Sheet", 0);

  

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

       do {

       // 构造ListObjectsRequest请求

        ListObjectsRequest listObjectsRequest = new ListObjectsRequest(BUCKET_NAME);

listObjectsRequest.setPrefix("helen/view");

listObjectsRequest.setMarker(nextMarker);

listObjectsRequest.setMaxKeys(maxKeys);

listing = ossClient.listObjects(listObjectsRequest);

List<OSSObjectSummary> sums = listing.getObjectSummaries();

for (OSSObjectSummary s : sums) {

try {

String size=getPrintSize(s.getSize());

System.out.println("文件名:"+s.getKey() + "   ---   文件大小:" + size );

i++;

Label title1 = new Label(0,0,"文件名");

sheet.addCell(title1);

Label title2 = new Label(1,0,"文件大小");

   sheet.addCell(title2);

Label filename = new Label(0,i,s.getKey());

sheet.addCell(filename);

Label fileSize = new Label(1,i,size);

       sheet.addCell(fileSize);

double t = s.getSize()/1000000;

sumSize += t;

} catch (RowsExceededException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (WriteException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

System.out.println(sumSize + " M");

nextMarker = listing.getNextMarker();

} while (listing.isTruncated());

       try {

        workbook.write();

workbook.close();

        os.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (WriteException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}


       

}

//字节转换

public static String getPrintSize(long size) {  

   //如果字节数少于1024,则直接以B为单位,否则先除于1024,后3位因太少无意义  

   if (size < 1024) {  

       return String.valueOf(size) + "B";  

   } else {  

       size = size / 1024;  

   }  

   //如果原字节数除于1024之后,少于1024,则可以直接以KB作为单位  

   //因为还没有到达要使用另一个单位的时候  

   //接下去以此类推  

   if (size < 1024) {  

       return String.valueOf(size) + "KB";  

   } else {  

       size = size / 1024;  

   }  

   if (size < 1024) {  

       //因为如果以MB为单位的话,要保留最后1位小数,  

       //因此,把此数乘以100之后再取余  

       size = size * 100;  

       return String.valueOf((size / 100)) + "."  

               + String.valueOf((size % 100)) + "MB";  

   } else {  

       //否则如果要以GB为单位的,先除于1024再作同样的处理  

       size = size * 100 / 1024;  

       return String.valueOf((size / 100)) + "."  

               + String.valueOf((size % 100)) + "GB";  

   }  

}  

}

本文转自杨海龙的博客博客51CTO博客,原文链接http://blog.51cto.com/7218743/1906828如需转载请自行联系原作者

IT达仁
相关实践学习
一小时快速掌握 SQL 语法
本实验带您学习SQL的基础语法,快速入门SQL。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情:&nbsp;https://www.aliyun.com/product/ecs
相关文章
|
22天前
|
存储 SQL BI
毫秒级查询性能优化实践!基于阿里云数据库 SelectDB 版内核:Apache Doris 在极越汽车数字化运营和营销方向的解决方案
毫秒级查询性能优化实践!基于阿里云数据库 SelectDB 版内核:Apache Doris 在极越汽车数字化运营和营销方向的解决方案
毫秒级查询性能优化实践!基于阿里云数据库 SelectDB 版内核:Apache Doris 在极越汽车数字化运营和营销方向的解决方案
|
1月前
|
存储 Kubernetes Cloud Native
【阿里云云原生专栏】云原生容器存储:阿里云CSI与EBS的高效配合策略
【5月更文挑战第29天】阿里云提供云原生容器存储接口(CSI)和弹性块存储(EBS)解决方案,以应对云原生环境中的数据存储挑战。CSI作为Kubernetes的标准接口简化存储管理,而EBS则提供高性能、高可靠性的块存储服务。二者协同实现动态供应、弹性伸缩及数据备份恢复。示例代码展示了在Kubernetes中使用CSI和EBS创建存储卷的过程。
161 3
|
18天前
|
SQL 分布式计算 DataWorks
DataWorks产品使用合集之如何将CSV文件从阿里云OSS同步到ODPS表,并且使用列作为表分区
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
DataWorks产品使用合集之如何将CSV文件从阿里云OSS同步到ODPS表,并且使用列作为表分区
|
1月前
|
存储 Cloud Native 对象存储
AutoMQ:如何基于阿里云计算与存储产品实现云原生架构升级
AutoMQ[1] 是新一代基于共享存储架构实现的云原生 Kafka。得益于其存算分离的共享存储架构,通过和阿里云合作,深度使用阿里云可靠、先进的云服务如对象存储OSS、块存储 ESSD、弹性伸缩ESS以及抢占式实例实现了相比 Apache Kafka 10倍的成本优势并且提供了自动弹性的能力。
84032 19
AutoMQ:如何基于阿里云计算与存储产品实现云原生架构升级
|
23小时前
|
缓存 运维 Devops
阿里云云效操作报错合集之在构建过程中,Docker尝试从缓存中获取某个文件(或计算缓存键)时遇到了问题,该如何处理
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
23小时前
|
运维 Devops 开发工具
阿里云云效操作报错合集之在云效中dockerFile直接想把两个目录下的文件进行合并,现在提示无法找到,该怎么办
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
3天前
|
Java 对象存储
阿里云OSS上传下载文件java
阿里云OSS上传下载文件java
28 0
|
1月前
|
存储 监控 Apache
查询提速11倍、资源节省70%,阿里云数据库内核版 Apache Doris 在网易日志和时序场景的实践
网易的灵犀办公和云信利用 Apache Doris 改进了大规模日志和时序数据处理,取代了 Elasticsearch 和 InfluxDB。Doris 实现了更低的服务器资源消耗和更高的查询性能,相比 Elasticsearch,查询速度提升至少 11 倍,存储资源节省达 70%。Doris 的列式存储、高压缩比和倒排索引等功能,优化了日志和时序数据的存储与分析,降低了存储成本并提高了查询效率。在灵犀办公和云信的实际应用中,Doris 显示出显著的性能优势,成功应对了数据增长带来的挑战。
查询提速11倍、资源节省70%,阿里云数据库内核版 Apache Doris 在网易日志和时序场景的实践
|
1月前
|
运维 数据挖掘 Serverless
阿里云Elasticsearch Serverless助力某电商平台公司实现商品订单数据的实时写入查询
某电商平台公司采用阿里云Elasticsearch Serverless解决方案,实现商品、订单和其他关键信息的写入和查询的实时响应。
230 1
|
1月前
|
存储 弹性计算 监控
【阿里云弹性计算】深入阿里云ECS配置选择:CPU、内存与存储的最优搭配策略
【5月更文挑战第20天】阿里云ECS提供多种实例类型满足不同需求,如通用型、计算型、内存型等。选择CPU时,通用应用可选1-2核,计算密集型应用推荐4核以上。内存选择要考虑应用类型,内存密集型至少4GB起。存储方面,系统盘和数据盘容量依据应用和数据量决定,高性能应用可选SSD或高效云盘。结合业务特点和预算制定配置方案,并通过监控应用性能适时调整,确保资源最优利用。示例代码展示了使用阿里云CLI创建ECS实例的过程。
113 5

热门文章

最新文章