Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java:返回流或结果字节_Java_Java Io - Fatal编程技术网

java:返回流或结果字节

java:返回流或结果字节,java,java-io,Java,Java Io,我需要从调用的方法返回ByteArrayOutputStream的字节数组。我认为有两种方法可以实现同样的效果:首先使用baos.tobytearrayoutputstream返回usetoByteArray()方法,然后使用baos.toByteArray()返回字节数组 我应该用哪一个 举例说明: 方法1 void parentMethod(){ bytes [] result = process(); } void byte[] process(){

我需要从调用的方法返回
ByteArrayOutputStream
的字节数组。我认为有两种方法可以实现同样的效果:首先使用
baos.tobytearrayoutputstream
返回
use
toByteArray()
方法,然后使用
baos.toByteArray()
返回字节数组

我应该用哪一个

举例说明:

方法1

void parentMethod(){
        bytes [] result = process();
    }
    void byte[] process(){
        ByteArrayOutputStream baos;
        .....
        .....
        .....
        baos.toByteArray();
    }
方法2

void parentMethod(){
        ByteArrayOutputStream baos = process();     
    }
    void ByteArrayOutputStream process(){
        ByteArrayOutputStream baos;
        .....
        .....
        .....
        return baos;
    }

还有另一种选择:返回
InputStream
。这个想法可能是您正在返回操作产生的数据。因此,返回输出流对我来说似乎很奇怪。要返回数据,您通常要么返回原始的
字节[]
,要么使用
InputStream
对其进行包装-后者更灵活,因为它可以从文件或类似的内容中读取,但需要调用方在之后关闭流

这在一定程度上也取决于调用者想要对数据做什么——如果您已经有了流,那么有些操作更容易执行;还有一些更容易使用字节数组的方法。我会让这对决定产生很大影响

如果确实要返回流,这很简单:

return new ByteArrayInputStream(baos.toByteArray());
因此,总结一下:

  • 不要通过tearrayoutputstream返回
    。在生成数据时使用该类是一个实现细节,它实际上不是操作的逻辑结果
  • 如果调用者可能会发现一个
    InputStream
    更易于使用,或者您以后可能想从文件(或网络连接,或其他)读取数据,请考虑返回该数据流
    ByteArrayInputStream
    适用于当前实现

还有另一种选择:返回
InputStream
。这个想法可能是您正在返回操作产生的数据。因此,返回输出流对我来说似乎很奇怪。要返回数据,您通常要么返回原始的
字节[]
,要么使用
InputStream
对其进行包装-后者更灵活,因为它可以从文件或类似的内容中读取,但需要调用方在之后关闭流

这在一定程度上也取决于调用者想要对数据做什么——如果您已经有了流,那么有些操作更容易执行;还有一些更容易使用字节数组的方法。我会让这对决定产生很大影响

如果确实要返回流,这很简单:

return new ByteArrayInputStream(baos.toByteArray());
因此,总结一下:

  • 不要通过tearrayoutputstream返回
    。在生成数据时使用该类是一个实现细节,它实际上不是操作的逻辑结果
  • 如果调用者可能会发现一个
    InputStream
    更易于使用,或者您以后可能想从文件(或网络连接,或其他)读取数据,请考虑返回该数据流
    ByteArrayInputStream
    适用于当前实现
如果
parentMethod()
不需要关心它是如何获得字节的,那么返回
byte[]
似乎更好。如果
parentMethod()
不需要关心它是如何获得字节的,那么返回
byte[]
似乎更好。