java - 数据输出流到数组

标签 java arrays string dataoutputstream

有没有办法将 DataOutputStream 内容写入 ArrayString,无论它包含哪种类型的数据?

DataOutputStream output = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(String dataPath)));

谢谢

最佳答案

使用ByteArrayOutputStream。

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 的内容的“镜像”

你仍然需要正确处理异常,并注意写入的数据量(将所有内容保存在内存中可能会导致内存不足)等。

关于java - 数据输出流到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35064323/

相关文章:

运行 jar 文件时出现 Java FileNotFoundException

c - 简单数组索引失败

c++ - 理解 C++ 模板类

c++ - 在 C++ 构造函数中为结构数组分配存储空间

c - 如何从c中的char字符串中获取每个元素?

java - 通知网格/列表/树内网格/列表/树的更改

java - 向 string/int 变量添加 0

java - 使用 Ehcache 从 Amazon S3 缓存对象

java - 线性搜索数组和字符串

c++ - 在 C++ 中添加字符串和文字的问题