我有一个小问题。如何将byte array
分段并保存为String
。我的意思是如果y字节数组太大,我怎么能从它创建几个字符串。举个例子,我第一次只得到50位/字节的字节,第二次得到下一个50等等。任何想法?
答案 0 :(得分:6)
使用String.getBytes()
方法。
答案 1 :(得分:1)
如果必须创建一个字符串,则需要比所有字节大小多几倍的内存。
首先,string是一个字符数组,字符大小为2个字节。
其次,String是一个不可变对象,因此不可能使用现有数组创建它,因此要构造它,将创建字符数组的第二个副本。如果内存消耗至关重要,请考虑使用CharSequence
代替String
。
最后,使用StringBuilder
或StringWriter
,例如:
String writer = new StringWriter();
writer.write(new String(byteArrayChunk1, "UTF-8"));
...
writer.write(new String(byteArrayChunkN, "UTF-8"));
String resultString = writer.toString();
更新的: 另外一个选择,更好,我想:
ByteArrayOutputStream baos = new ByteArrayOutputStream();
baos.write(byteArrayChunk1);
baos.write(byteArrayChunkN);
String resultString = baos.toString("UTF-8");
答案 2 :(得分:0)
将您的字节数组转换为Base64字符串,然后将其拆分。之后在合并阶段合并该字符串然后将结果转换为Base64。 或者,如果您有内存限制,首先将字节数组拆分为某些字节数组
byte[] origBytes = ...;
//a loop for splitting bytes
byte[] splittedBytes1 = ...;
byte[] splittedBytes2 = ...;
...
String strbytes1 = Base64.encodeBytes(splittedBytes1);
String strbytes2 = Base64.encodeBytes(splittedBytes2);
...