我使用这种方法从服务器的响应中将数据存储在文件中。
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);