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

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,内容安全 1000次 1年
对象存储 OSS,恶意文件检测 1000次 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达仁
相关实践学习
2分钟自动化部署人生模拟器
本场景将带你借助云效流水线Flow实现人生模拟器小游戏的自动化部署
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情:&nbsp;https://www.aliyun.com/product/ecs
相关文章
|
4月前
内存或磁盘不足,excel无法再次打开或保存任何文档
内存或磁盘不足,excel无法再次打开或保存任何文档
|
5月前
分享:根据批量的图片文件名,如何在电脑里一次性查找多张图片,复制并保存到新的文件夹
本文介绍了一款批量文件处理软件,用于快速查找和管理大量图片。通过下载链接提供软件,用户可执行以下操作:搜索并复制特定文件名的图片,从大型图库中筛选目标图片至指定位置,或按文件名批量删除图片。软件支持完全匹配、模糊查找和格式限定等查找方式。使用后能显著提升图片整理效率,节省时间。
666 3
|
7月前
|
Windows
推荐:如何批量根据PDF文件名批量查找PDF文件,复制到指定地方保存,通过文件名批量复制文件,按照文件名批量复制文件,根据文件名批量提取文件
该文介绍了一个批量查找PDF文件(不限于找PDF)的工具,用于在多级文件夹中快速查找并复制特定文件。通过下载提供的软件,用户可以加载PDF库,输入文件名列表,设置操作参数(如保存路径、复制或删除)及搜索模式。软件能高效执行,例如在1.1秒内完成对数千文件中的37个目标文件的复制,显著提升了工作效率,避免了手动逐个查找和复制的繁琐。
627 0
|
JSON Java 应用服务中间件
利用esaypoi自定义Excel表格模板导入与导出表单数据
今天工作中又遇到了excel导出数据的功能,在这里我将自己自定义的Excel模板和相关的代码拿出来,解释一下如何进行操作,以便日后能够方便的进行功能开发,提高效率。
748 0
|
存储 数据处理 Python
批量读取docx文件中的excel表格格式数据
批量读取docx文件中的excel表格格式数据
106 6
|
存储 数据处理 索引
将物模型数据导出到本地并保存为Excel文件
将物模型数据导出到本地并保存为Excel文件
314 3
从本地文件获取josn数据操作修改本地文件
从本地文件获取josn数据操作修改本地文件
110 0
|
JSON NoSQL 小程序
小程序中实现excel数据的批量导入
小程序中实现excel数据的批量导入
小程序中实现excel数据的批量导入
|
存储
有关使用Excel读取用户上传模板问题
有关使用Excel读取用户上传模板问题
100 0
|
.NET 数据库 开发框架
如何保存PDF、Word和Excel文件到数据库中
在项目中,有时候我们很需要把PDF、Word和Excel文档等等上传到数据库,以便日后使用。今天这篇文章向大家讲解如何将这些文件保存到数据库的。 详细步骤 第一步:打开数据库,单击新建查询,创建一个名称为Documents的表: 代码如下: create table Documents ( ...
6781 0