`
hpgary
  • 浏览: 81747 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

google snapy 压缩文件

    博客分类:
  • Java
阅读更多

引入 google snappy 包

   github 上snappy地址 http://github.com/google/snappy

<dependency>
	<groupId>org.xerial.snappy</groupId>
	<artifactId>snappy-java</artifactId>
	<version>1.1.2.6</version>
</dependency>

 使用snappy压缩文件

import java.io.ByteArrayOutputStream;
import java.io.RandomAccessFile;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;

import org.xerial.snappy.Snappy;

public class SnappyDemo {

	public static void main(String[] args) throws Exception {
		// 待压缩的文件,可以是任意文件
		RandomAccessFile raf = new RandomAccessFile("c:/花好月圆夜.mp4", "r");
                //压缩后保存的文件
		RandomAccessFile w = new RandomAccessFile("c:/cas-server-3.5.2-master.snappy", "rw");
		FileChannel channel = raf.getChannel();
		ByteBuffer buffer = ByteBuffer.allocate(4096);
		ByteArrayOutputStream out = new ByteArrayOutputStream(1024); 
		while (channel.read(buffer) > -1) {
			buffer.flip() ;
			
			while(buffer.hasRemaining()){
				out.write( buffer.get() ); 
			}
			buffer.clear() ;
		}
                //压缩内容写入 文件,如果文件比较大 压缩后的文件可以分多个文件保存,
               // 例如hadoop 文件每个块自定义为128M
		w.write( Snappy.compress(out.toByteArray()) ); 
		raf.close();
		w.close();
		out.close(); 
	}
}

 

使用snappy解压缩

import java.io.ByteArrayOutputStream;
import java.io.RandomAccessFile;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;

import org.xerial.snappy.Snappy;

public class UnSnappyDemo {

	public static void main(String[] args) throws Exception {
		RandomAccessFile raf = new RandomAccessFile("c:/cas-server-3.5.2-master.snappy", "r");
		RandomAccessFile w = new RandomAccessFile("c:/cas-server-3.5.2-master.zip", "rw");
		FileChannel channel = raf.getChannel();
		ByteBuffer buffer = ByteBuffer.allocate(196);
		ByteArrayOutputStream out = new ByteArrayOutputStream(1024);  
		while (channel.read(buffer) > -1){
			buffer.flip() ;
			while(buffer.hasRemaining()){
				out.write( buffer.get() ); 
			}
			buffer.clear() ;
			buffer = ByteBuffer.allocate(196);
		}
		w.write( Snappy.uncompress(out.toByteArray()) );
		raf.close();
		w.close(); 
	}
}

 

 

2
2
分享到:
评论

相关推荐

    前端开源库-snapy-node

    描述中提到的"Snapy节点,节点的测试运行程序"进一步确认了Snapy-node是一个针对Node.js环境的测试工具。测试运行程序是自动化测试框架的关键部分,它负责执行预定的测试用例并报告结果,这对于持续集成和持续部署...

    前端开源库-snapy-file

    **前端开源库 Snapy-File:从文件中获取快照** 在现代Web开发中,前端开发者经常需要处理用户的文件输入,例如图片、文档等。`Snapy-File` 是一个前端开源库,专为实现从文件中快速获取快照而设计。这个库提供了一...

    前端开源库-snapy-entry

    而 `snapy-entry` 正是一个针对 Webpack 的开源库,专门用于设置项目的条目(entry)文件。 Webpack 的条目(entry)配置是项目构建的核心部分,它定义了应用的入口起点,Webpack 会从这些入口出发,递归解析依赖,...

    前端开源库-snapy

    然后,在测试文件中引入Snapy 并编写测试: ```javascript import { test } from 'snapy'; test('MyComponent snapshot', () =&gt; { const component = render(); expect(component).toMatchSnapshot(); }); ``` ...

    前端开源库-snapy-stream

    2. **可读流**:Snapy-Stream提供了可读流接口,允许开发者从不同源(如网络请求、文件系统等)获取数据,并以可控的方式消费这些数据。可读流可以被分块读取,从而优化内存使用和性能。 3. **可写流**:与可读流...

    前端开源库-snapy-cache

    2. **导入与初始化**:在你的JavaScript文件中,引入`snapy-cache`库,并进行初始化。例如: ```javascript const cache = require('snapy-cache'); cache.init(); ``` 3. **数据缓存**:使用`set`方法将数据...

    前端开源库-snapy-obj

    **Snapy Obj:前端开发中的对象快照工具** 在前端开发中,我们经常需要调试和对比JavaScript对象的状态,以便理解代码执行的过程和结果。`Snapy-Obj` 是一个专门针对这一需求的开源库,它提供了便捷的方式来捕获和...

    前端开源库-snapy-entry.zip

    在大型应用中,通常会有多个模块,每个模块都有自己的入口文件。Snapy-Entry允许开发者将这些模块的入口按需加载,减少了初始加载时的代码体积,从而提高了页面的加载速度。通过动态加载模块,用户只需要下载他们...

    前端开源库-snapy-promise

    **Snapy-Promise:前端开发中的承诺快照库** 在前端开发中,异步操作是不可或缺的一部分,Promise作为处理异步操作的一种强大工具,已经成为了JavaScript标准库ES6的重要组成部分。Snapy-Promise是一个专门为前端...

    前端开源库-snapy-filter-obj

    "snapy-filter-obj"是一个这样的开源库,专门用于处理对象的过滤操作。这个库的名字“Snapy”可能来源于“Snapshot”,暗示它能帮助我们快速地对对象进行“快照”并应用特定的过滤条件。下面我们将详细探讨这个库的...

    前端开源库-snapy-node-report

    **Snapy Node Report:前端开源库的深度解析** Snapy Node Report 是一款专为前端开发者设计的开源库,主要用于收集和分析快照信息,帮助开发者更有效地管理和排查应用中的错误资源。这款工具以其强大的功能和易用...

    前端开源库-snapy-obj.zip

    "Snapy-Obj"是一个前端开源库,主要针对对象(Object)操作进行优化,提供了一系列实用的方法,旨在简化JavaScript中的对象处理。这个库的核心目标是提高开发者在处理复杂数据结构时的效率,同时保持代码的简洁性...

    前端开源库-snapy-transform-obj

    今天我们将聚焦于一个名为"Snapy Transform Obj"的开源库,它在前端开发中扮演着重要的角色,特别是在处理对象数据时。"Snapy Transform Obj"正如其名,主要功能是在对对象进行快照之前对其进行转换,以满足特定的...

    snapy:Snapchat克隆

    `snapy-master` 文件夹很可能是项目的主要源代码目录,包含了项目的配置文件、源码、资源文件等。通常,React 项目会有一个 `src` 目录,其中包含应用的所有组件、样式和配置。`public` 目录可能包含了静态资源,如...

    snapy:docs-crx插件

    "Snapy: Docs CRX 插件"是一个专为提高文档制作效率而设计的浏览器扩展程序,特别适合那些需要频繁创建包含截图说明的文档的用户。这个插件以英语为操作语言,简化了传统文档创建过程,使得创建带有图片的教程、指南...

    lv_vfw.zip_Capture_LabVIEW webcam_labview image_webcam_webcam la

    这些库文件通常包含了特定的功能实现,如图像捕获或数据压缩,它们被LabVIEW程序调用以完成特定任务。 "readme.txt" 文件通常包含关于如何使用或安装压缩包内容的重要信息,比如步骤、注意事项或者依赖项等。 ...

    DXP绘制教程

    1. **栅格设置**:执行【Design】-&gt;【Board Options】命令设置栅格,如SnapX、SnapY、ComponentX和ComponentY栏的值设为25mil。 2. **层设置**:定义板层和其他非电层,可以显示、添加、删除、重命名以及设置层的...

    snappydata:极稳定的开源网页数据爬虫,1服务端 + 多客户端

    作者工具仅供交流学习,不能用于商业用途版本更新v2.0 2019/06/22服务端改造成springbootsnappy爬虫能做什么能稳定,准确,快速,集群爬取规则网页的数据,并存储到mysql中。 如爬取酷云电影资源 ,爬取安居客新房和...

Global site tag (gtag.js) - Google Analytics