2013-01-08 21 views
0

我正在通過使用JSCH通過SFTP服務器將文檔保存到網絡驅動器。在這我有一個這樣的一些方法來保存文件,它需要兩個參數inputStreampath to save the stream into a file which is a string.如何關閉未由InputStream定義但直接在方法內部使用的Inputstream?

String message="I am saving this file to the shared drive"; 
channelSftp.put(new ByteArrayInputStream(message.getBytes()),pathFromChannel+"/"+"file.txt"); 

所以,在上面的代碼,我直接用

1. new ByteArrayInputStream(message.getBytes())

,而不是將其分配給某些InputStream的即

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

如果我做這樣的事我可以關閉這個Stream通過做is.close();。但是如何直接使用而不定義它時如何關閉InputstreamoutputStream?或者我不需要關閉它?

+2

你爲什麼不把它分配給一個變量,在通過它,然後將其關閉?此外,byteareaysyreams不需要關閉 – Bohemian

+0

因此,將流分配給某些變量而不是直接使用它是最佳做法嗎? – SRy

回答

1

你並不需要關閉ByteArrayInputStream - 這僅僅是一個數組,並沒有插座IO

+0

如果我直接使用任何其他套接字流(如'FileInputStream')而不分配給變量?如何在當時關閉該分配?或者將流分配給某個變量然後使用它並關閉它? – SRy

+0

在這種情況下,您必須將其分配給變量並在finally語句中關閉它。另請參閱http://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html - 這與java 8首先得到 –

+0

知道了。謝謝參考。 – SRy

相關問題