将文件写到hdfs的zip中

现在java代码中要向hdfs上写数据,但数据要写到zip压缩包中(hdfs上存在不存在此zip包都无所谓);之前没操作过,现在记录一下

StringBuffer sb = new StringBuffer();   //zip中的文件要写入的内容
System.setProperty("HADOOP_USER_NAME","root");	//设置一下hadoop的权限
String saveZipPath = "hdfs://127.0.0.1:9000/test/server.zip"; //要将文件保存的zip包的路径(此zip包在hdfs上存在与否都无所谓)
try {
   	Configuration conf = new Configuration();
   	FileSystem fs = FileSystem.get(URI.create(saveZipPath), conf);
   	//构建输出流,并给定权限
   	FSDataOutputStream fSDataOutputStream =FileSystem.create(fs,new Path(saveZipPath),new FsPermission("777"));
   	//通过输出流构建压缩流
   	ZipOutputStream zipOutputStream = new ZipOutputStream(fSDataOutputStream);
   	//zip包中要存的文件的名字
   	zipOutputStream.putNextEntry(new ZipEntry("server.yml"));
   	//将要写入zip包的文件中的内容,转为byte并指定UTF-8编码
   	byte[] bytes = sb .toString().getBytes(StandardCharsets.UTF_8);
   	//向zip包的文件中写数据
   	zipOutputStream.write(bytes);
   	zipOutputStream.closeEntry();
   	zipOutputStream.flush();
   	zipOutputStream.close();
} catch (Exception e) {
   	e.printStackTrace();
}

通过以上的代码,最后,在test/server.zip下会有个叫server.yml文件,文件中的内容就是上面声明的sb字段存的内容

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值