不同大小的文件存储字符串v/s ByteArray在file android



我使用这种方法从服务器的响应中将数据存储在文件中。

 ByteArrayOutputStream outstream = new ByteArrayOutputStream();
 response.getEntity().writeTo(outstream);
 byte[] responseBody = outstream.toByteArray();
 String data = new String(responseBody);
 FileOutputStream out = new FileOutputStream(new File(my_path));
 out.write(data.getBytes());
 out.flush();
 out.close();

它工作正常,我的文件被创建,它的大小是3786字节。

现在考虑这个,

ByteArrayOutputStream outstream = new ByteArrayOutputStream();
 response.getEntity().writeTo(outstream);
 byte[] responseBody = outstream.toByteArray();
 FileOutputStream out = new FileOutputStream(new File(my_path));
 out.write(responseBody);
 out.flush();
 out.close();   

它给出的文件大小为1993字节。

有谁能帮我理解这个,这个new String(responseBody)做一些事情来响应字节像一些编码吗?

是,从bytes构造String根据当前默认的字符编码(如果没有显式指定)解码字节。此外,String.getBytes()做同样的反向(可能不一定产生相同的字节序列,用于创建它)。

A String保存文本。如果您的数据是原始二进制数据,并且打算这样处理,则不应该将其存储在String中,而应该将其存储在byte[]中。

根本不需要在第一个位中有String data,只需将byte[]写入文件:

 byte[] responseBody = outstream.toByteArray();
 String data = new String(responseBody);
 ...
 out.write(data.getBytes());

可以是:

 byte[] responseBody = outstream.toByteArray();
 ...
 out.write(responseBody);

相关内容

  • 没有找到相关文章

最新更新