DataOutputStream 到数组
DataOutputStream to Array
有没有办法将 DataOutputStream 内容写入 Array
或 String
而不管它包含哪种类型的数据?
DataOutputStream output = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(String dataPath)));
谢谢
使用 ByteArrrayOutputStream。
https://docs.oracle.com/javase/7/docs/api/java/io/ByteArrayOutputStream.html
ByteArrayOutputStream baos = new ByteArrayOutputStream();
OutputStream os = new DataOutputStream(baos);
os.write(...);
byte[] data = baos.toByteArray();
String dataAsString = new String(data, "UTF-8"); // or whatever encoding you are using
您也可以使用以下策略:
class CompositeOutputStream implements OutputStream {
private OutputStream first,second;
public CompositeOutputStream(OutputStream first, OutputStream second) {
this.first = first;
this.second=second;
}
public void write(int b) throws IOException {
first.write(b);
second.write(b);
}
// etc.
}
搭配使用:
ByteArrayOutputStream baos = new ByteArrayOutputStream();
OutputStream os = new CompositeOutputStream(new DataOutputStream(...), baos);
os.write(...);
byte[] data = baos.toByteArray();
String dataAsString = new String(data, "UTF-8"); // or whatever encoding you are using
// etc.
"baos" 只是已写入原始 DataOutputStream
内容的 "mirror"
还是要正确处理异常,注意写入的数据量(全部保存在内存中可能导致内存不足)等
有没有办法将 DataOutputStream 内容写入 Array
或 String
而不管它包含哪种类型的数据?
DataOutputStream output = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(String dataPath)));
谢谢
使用 ByteArrrayOutputStream。
https://docs.oracle.com/javase/7/docs/api/java/io/ByteArrayOutputStream.html
ByteArrayOutputStream baos = new ByteArrayOutputStream();
OutputStream os = new DataOutputStream(baos);
os.write(...);
byte[] data = baos.toByteArray();
String dataAsString = new String(data, "UTF-8"); // or whatever encoding you are using
您也可以使用以下策略:
class CompositeOutputStream implements OutputStream {
private OutputStream first,second;
public CompositeOutputStream(OutputStream first, OutputStream second) {
this.first = first;
this.second=second;
}
public void write(int b) throws IOException {
first.write(b);
second.write(b);
}
// etc.
}
搭配使用:
ByteArrayOutputStream baos = new ByteArrayOutputStream();
OutputStream os = new CompositeOutputStream(new DataOutputStream(...), baos);
os.write(...);
byte[] data = baos.toByteArray();
String dataAsString = new String(data, "UTF-8"); // or whatever encoding you are using
// etc.
"baos" 只是已写入原始 DataOutputStream
内容的 "mirror"还是要正确处理异常,注意写入的数据量(全部保存在内存中可能导致内存不足)等