栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

自定义使用javaAPI进行文件的解压缩

自定义使用javaAPI进行文件的解压缩

使用javaAPI进行文件的解压缩
  • 前言
  • 二、代码


前言 二、代码

代码如下(示例):

package com.atguigu.mr.test;

import static org.junit.Assert.*;

import java.io.IOException;
import java.io.InputStream;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;
import org.apache.hadoop.io.compress.CompressionCodec;
import org.apache.hadoop.io.compress.CompressionCodecFactory;
import org.apache.hadoop.io.compress.CompressionInputStream;
import org.apache.hadoop.io.compress.CompressionOutputStream;
import org.apache.hadoop.util.ReflectionUtils;
import org.junit.Test;

public class TestCompression {

	@Test
	public void testcompression() throws ClassNotFoundException, IOException {
		
		//解压缩:调用Compressioncodec.createcompressioninputsream	返回一个可以解压缩的输入流
		//压缩:调用Compressioncodec.createcompressionoutputsream	返回一个可以压缩的输出流
	Path file=new Path("D:/悲惨世界.txt");
	String codecClassName="org.apache.hadoop.io.compress.GzipCodec";
	Class codecClass = Class.forName(codecClassName);
	Configuration conf = new Configuration();
	FileSystem fs=FileSystem.get(conf);
	FSDataInputStream inputStream = fs.open(file);
	//确定使用哪种压缩格式compressioncodec
	CompressionCodec codec = (CompressionCodec) ReflectionUtils.newInstance(codecClass, conf);
	FSDataOutputStream outputStream = fs.create(new Path("D:/file"+codec.getDefaultExtension()), true);
	//带压缩的输出流
	CompressionOutputStream createOutputStream = codec.createOutputStream(outputStream);
	IOUtils.copyBytes(inputStream, createOutputStream, conf, true);
	
	}
@Test
public void testdecompression() throws Exception {
	Path file=new Path("D:/file.gz");
	Configuration conf = new Configuration();
	//根据后缀获取文件的额压缩格式
	CompressionCodec codec = new CompressionCodecFactory(conf).getCodec(file);
//创建一个可以解压缩的输入流
	FileSystem fs=FileSystem.get(conf);
	FSDataInputStream is = fs.open(file);
	CompressionInputStream createInputStream = codec.createInputStream(is);
	//创建一个非压缩的输出流
	FSDataOutputStream outputstream = fs.create(new Path("D:/file.txt"), true);
	IOUtils.copyBytes(createInputStream, outputstream, conf, true);
}
}

在这里插入图片描述

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/582428.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号