2013-06-21 14 views
-1

直接的APIInputStream.available()如何工作?

公衆詮釋可用() 拋出IOException異常

返回可以從該輸入流不被阻塞地讀取(或 跳過)的字節數的估計值下一個 調用此輸入流的方法。下一個調用 可能是同一個線程或另一個線程。單個讀取或跳過 這麼多字節不會被阻塞,但可以讀取或跳過較少的字節。

注意的是,雖然InputStream的一些實現將流中返回的字節 總數,許多人不會。從來沒有 正確使用此方法的返回值來分配旨在保存此流中的所有數據的緩衝區 。

如果通過調用 close()方法關閉了此輸入流,則此子方法的實現可能會選擇拋出 IOException。

類InputStream可用的方法總是返回0

此方法應該由子類覆蓋。

我不能完全理解這種方法的可能用法的概念。任何人都可以爲它做一個真實的例子嗎? 在此先感謝。

+0

我,因爲它的確切行爲依賴於上下文和OS和其他的東西,你不能總是控制不一般的使用它。如果你可以避免使用我會的。 –

回答

1

我一直在尋找這一個現實生活中的例子20年以上。

它如何工作取決於流。對於某些流,它根本不起作用。對於緩衝流,它通過返回緩衝區中的未讀數量加上嵌套流的available()來工作。對於套接字和文件,它執行系統調用。