Java 如何关闭不是由Inputstream定义而是直接在方法内部使用的Inputstream?

Java 如何关闭不是由Inputstream定义而是直接在方法内部使用的Inputstream?,java,inputstream,outputstream,jsch,Java,Inputstream,Outputstream,Jsch,我使用JSCH通过SFTP服务器将文档保存到网络驱动器。我有一个类似这样的方法来保存文档,它使用两个参数inputStream和path将流保存到一个字符串文件中。 String message="I am saving this file to the shared drive"; channelSftp.put(new ByteArrayInputStream(message.getBytes()),pathFromChannel+"/"+"file.txt"); 因此,在上面的代码中,我

我使用JSCH通过SFTP服务器将文档保存到网络驱动器。我有一个类似这样的方法来保存文档,它使用两个参数
inputStream
path将流保存到一个字符串文件中。

String message="I am saving this file to the shared drive";
channelSftp.put(new ByteArrayInputStream(message.getBytes()),pathFromChannel+"/"+"file.txt");
因此,在上面的代码中,我直接使用

1。新建ByteArrayInputStream(message.getBytes())

而不是将其分配给某个输入流,即

2 .InputStream in=new ByteArrayInputStream(message.getBytes());

如果我这样做,我可以通过执行
is.close()关闭这个流。但是,当我直接使用而不定义时,如何关闭
Inputstream
outputStream
?或者我不需要关闭它吗?

您不需要通过tearrayinputstream关闭
-这只是一个数组,而不是套接字IO

为什么不将它分配给一个变量,传递它,然后关闭它?也,ByteAreySyreams不需要关闭。将流分配给某个变量而不是直接使用它是最佳做法吗?如果我直接使用任何其他套接字流,如“FileInputStream”,而不分配给变量,会怎么样?当时如何关闭它?或者将流分配给某个变量,然后使用它并关闭它是否合适?在在这种情况下,必须将其分配给变量,并在finally语句中关闭它。另请参见-这将首先与Java8通信