在使用 BytesWritable 进行小文件合并时,发现长度与原类容不一致,会多出一些空格

测试代码

@Test
public void test() {
String str = "aaa"; BytesWritable v = new BytesWritable();
v.set(str.getBytes(), 0, str.getBytes().length); System.out.println("*" + new String(v.getBytes()) + "*");
}

结果,看到多出了一个空格

查看 BytesWritable 源码,发现复制后数组大小会被处理,真正存储类容长度的为 size 属性

public void set(byte[] newData, int offset, int length) {
setSize(0);
setSize(length);
System.arraycopy(newData, offset, bytes, 0, size);
}
public void setSize(int size) {
if (size > getCapacity()) {
// Avoid overflowing the int too early by casting to a long.
long newSize = Math.min(Integer.MAX_VALUE, (3L * size) / 2L);
setCapacity((int) newSize);
}
this.size = size;
}

既然知道长度,在转换时设置上就好了

@Test
public void test() {
String str = "aaa"; BytesWritable v = new BytesWritable();
v.set(str.getBytes(), 0, str.getBytes().length); // getSize()为过期方法,使用 getLength()
System.out.println("*" + new String(v.getBytes(),0,v.getLength()) + "*");
}


http://hadoop.apache.org/docs/r2.9.2/api/org/apache/hadoop/io/BytesWritable.html

BytesWritable 长度问题(多出空格)的更多相关文章

  1. HW—字符串最后一个单词的长度,单词以空格隔开。

    描述 计算字符串最后一个单词的长度,单词以空格隔开. 知识点 字符串,循环 运行时间限制 0M 内存限制 0 输入 一行字符串,长度小于128. 输出 整数N,最后一个单词的长度. 样例输入 hell ...

  2. C语言之计算字符串最后一个单词的长度,单词以空格隔开

    //计算字符串最后一个单词的长度,单词以空格隔开. #include<stdio.h> #include<string.h> #include<windows.h> ...

  3. test_1 计算字符串最后一个单词的长度,单词以空格隔开

    题目描述:计算字符串最后一个单词的长度,单词以空格隔开.  输入描述: 一行字符串,非空,长度小于5000. 输出描述: 整数N,最后一个单词的长度. #coding=utf-8 str = raw_ ...

  4. Aspose.words写表格时多出空格的问题

    通过aspose.words创建表格时,每一个表格总是有一个制表符,和空格差不多,经过查找原因如下: 我是先通过书签找到需要插入表格的位置,在这个位置开始写表格的操作.问题出在书签上,这个书签在创建的 ...

  5. UnityToLaya小插件-找出空格并替换

    unity导出的文件中经常会出现带有空格的节点或者文件夹 而这些空格在本地开发测试过程中不会出现,当这些带有空格路径的文件需要放到网络上时,就出现问题了 所以这里写了一个简单的查找并清理空格的插件, ...

  6. 计算字符串最后一个单词的长度,单词以空格隔开。 java算法

    import java.util.Scanner; public class Main{ public static void main(String[] args){ Scanner in = ne ...

  7. P44、面试题4:替换空格

    题目:请实现一个函数,把字符串中的每个空格替换成“%20”.例如输入“We are happy.”,则输出“We%20are%20happy.”. 如果用java string类中提供的replace ...

  8. 《剑指Offer》面试题5-替换空格

    题目:请实现一个函数,把字符串中的每个空格替换成"%20".例如输入"We are happy.",则输出"We%20are%20happy.&quo ...

  9. 剑指offer面试题4 替换空格(c)

随机推荐

  1. feign 多参数问题

    参考: https://stackoverflow.com/questions/43604734/springboot-feignclient-method-has-too-many-paramter ...

  2. 64位Win7安装Oracle12C临时位置权限错误解决方案

    今天装备安装Oracle12C体验一下,结果遇到问题:请确保当前用户具有访问临时位置所需的权限,无法继续安装,上网查了一下,解决方案如下:  第一步:  控制面板>所有控制面板项>管理工具 ...

  3. Delphi Form组件

  4. PHP7安装redis扩展

    PHP7安装redis扩展优秀开源项目:http://github.crmeb.net/u/liaofeiyum -y install git git clone https://github.com ...

  5. DP问题练习2:网格路径数量计算问题

    DP问题练习2:网格路径数量计算问题 问题描述 有一个机器人的位于一个 m × n 个网格左上角. 机器人每一时刻只能向下或者向右移动一步.机器人试图达到网格的右下角. 问有多少条不同的路径? 样例: ...

  6. Flow-based model

    文章1:  NICE: NON-LINEAR INDEPENDENT COMPONENTS ESTIMATION 文章2:Real-valued Non-Volume Preserving (Real ...

  7. string::find_last_not_of

    #include <iostream>#include <string> using namespace std;int main(){ string s1("abc ...

  8. Jquery+json绑定带层次下拉框(select控件)

    一.实现的效果图 备注: 1.主要实现添加类别绑定到Ztree树之后,select下拉框在不刷新页面的情况下,通过Jquery重新绑定问题,增加用户体验度: 2.这个只是实现两层的绑定,通过sql语句 ...

  9. Linux——awk

    https://blog.csdn.net/jin970505/article/details/79056457 可以根据特定规则输出文本文件内容

  10. C#生成的后台文件 ***.vshost.exe

    vshost是visual studio宿主应用程序,vs运行调试时是打开的其实是这个文件,这个程序可以让vs跟踪调试信息.而exe则可以直接打开,vs不会跟踪任何这个文件的运行情况.只要引用的程序集 ...