收藏私塾在线
 

欢迎您来到私塾在线网!   

请登录! 

免费注册 

交流首页 » 灌水乐园 »在hbase上存储文件以及下载  XML
发表人 内容
sunshinexiaobin
[头像]

交流经验:
总积分:214
级别:普通会员
注册时间: 2012-05-26
文章: 202
离线

因为hbase的存储只支持文本。但当我们需要要一些文件类型上传到hbase上的时候,如果使用文件流,将它转成文本类型,上传下载是没有问题,可是这样一来,新生成的文件与原始文件的里的格式(如DOC里的图片)这样的东西就不存在了,这样的话,就没有什么意义了。

因此,上传到hbase的时候,可以通过将文件流转换成BASE64的编码,这样,上传下载仍是原文件。但是要注意的是,该文件的格式,如果格式不统一的话,还是不会出来的。

我就遇到过这样的问题,该文件是docx格式的,我下载后转成doc的,就会出问题。

下面是实现代码

Java代码    收藏代码
  1. public String getSource(String URL) throws IOException{  
  2.      File file = new File(URL);  
  3.      file.length();  
  4.      FileInputStream is = new FileInputStream(file);  
  5.      byte[] bytes = new byte[(int) file.length()];  
  6.      int len=0;  
  7.      while( (len = is.read(bytes)) != -1 ){  
  8.      is.read(bytes);  
  9.      }  
  10.      is.close();  
  11.      BASE64Encoder be = new BASE64Encoder();  
  12.      return be.encode(bytes);  
  13. }  

 

Java代码    收藏代码
  1. public String down(String tablename,String rowkey) throws IOException{  
  2. BASE64Decoder db = new BASE64Decoder();  
  3. String Content="";  
  4. HTable talbe =new HTable(tablename);  
  5. Result result = null;  
  6. Get get = new Get(Bytes.toBytes(Id));  
  7. get.addFamily(Bytes.toBytes("property"));//这是在hbase上存储的该文件的一些属性  
  8. get.addFamily(Bytes.toBytes("content"));//这是在hbase上存储该文件的BASE64编码的列族名  
  9. result = table.get(get);  
  10. table.close();  
  11. Content = Bytes.toString(r.getValue(Bytes.toBytes("content"), Bytes  
  12.                     .toBytes("content")));//获得到该文件的文本  
  13. String title=Bytes.toString(r.getValue(Bytes.toBytes("property"),Bytes.toBytes("title")));  
  14. String downurl=tmp+title;  
  15. byte c[] = bd.decodeBuffer(tmp);  
  16.         FileOutputStream out = new FileOutputStream(new File(downurl));  
  17.         out.write(c);  
  18.         out.close();  
  19.     return downurl;  
  20. }  

推广链接
精品视频课程推荐

Java数据结构和算法精讲版
本课程专注于数据结构和算法的内容,使用Java来进行代码示例,不空洞的讲解概念和理论,重点放在代码的实现和示例上。 从零开始、全面系统、成体系的讲解数据结构和基本算法,循序渐进的讲述构建软件系统所常见的数据结构和算法。

透彻理解JavaBean视频教程
深入浅出的讲解JavaBen的写法、JavaBean的用法、JavaBean的实现机制、JavaBean对应翻译的代码理解。

Java Web开发理论部分视频教程
系统掌握开发实际的Java Web应用所需的理论知识和技能(Servlet、Jsp、JavaBean、TagLib、EL、JSTL、MVC模式、连接池DataSource、JNDI等知识)。涉及项目:在线投票计数、在线人数统计、登录检查、购物车、商品管理、非法字符替换等多个随堂演示小应用。

Java Web开发-项目部分(中国移动科技综合管理系统)视频教程
中国移动科技综合管理系统,对JDBC实现CRUD的抽象化和复用化;UUID自动生成;分层开发、综合示范Jsp+Servlet+JavaBean+TagLib+JSTL+JDBC的实现;Web分页、Web树、日期控件、真实值和表现值转换;众多杂项技术的实现,比如:tab、左右选择等等

深入浅出学Shrio视频教程
内容概述:Shiro是目前最热门、最易用、功能超强大的Java权限管理框架,强烈推荐,每个项目都必备的权限管理技术!通过本课程,你将从零开始直到彻底掌握Shiro的相关开发知识,达到可以进行实际项目开发的能力。包括:权限管理基础、Shiro入门、配置、身份认证、授权、Realms、Session管理、和Spring的集成、Web、Cache等众多开发细节技术 技术要点:源码级分析Shiro的授权过程、自定义开发Realm、多个Realms的开发配置、自定义开发AuthenticationStrategy、自定义开发自定义SessionDAO、和Struts2+Spring3的集成(包括修正struts2的bug)、Shiro和SpringMVC+Spring3的集成、包装使用其他的Cache框架、缓存数据同步更新的解决方案等等实际开发中常用的内容



个性签名:努力就好!!!
1040426125
[头像]

交流经验:
总积分:102
级别:普通会员
注册时间: 2011-12-14
文章: 2
离线

请问,还能留个QQ 啊
 
交流首页 » 灌水乐园
前往:   

关于我们 | 联系我们 | 用户协议 | 私塾在线服务协议 | 版权声明 | 隐私保护

版权所有 Copyright(C)2009-2012 私塾在线学习网