

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 列出串流
<a name="kinesis-using-sdk-java-list-streams"></a>

串流的範圍是與用於執行個體化 Kinesis Data Streams 用戶端的 AWS 登入資料相關聯的 AWS 帳戶，以及用戶端指定的區域。 AWS 帳戶一次可以有多個作用中的串流。您可以在 Kinesis Data Streams 主控台中或是以程式設計方式列出串流。本節中的程式碼說明如何列出您 AWS 帳戶的所有串流。

```
ListStreamsRequest listStreamsRequest = new ListStreamsRequest();
listStreamsRequest.setLimit(20); 
ListStreamsResult listStreamsResult = client.listStreams(listStreamsRequest);
List<String> streamNames = listStreamsResult.getStreamNames();
```

此程式碼範例會先建立 `ListStreamsRequest` 的新執行個體，並呼叫它的 `setLimit` 方法來指定針對通往 `listStreams` 的每個呼叫，應該傳回最多 20 個串流。如果您不為 `setLimit` 指定值，Kinesis Data Streams 會傳回數量小於或等於帳戶中數量的一些串流。然後該程式碼會將 `listStreamsRequest` 傳遞至用戶端的 `listStreams` 方法。傳回值 `listStreams` 會存放在某個 `ListStreamsResult` 物件中。該程式碼呼叫在此物件上的 `getStreamNames` 方法，並將傳回的串流名稱存放在 `streamNames` 清單中。請注意，即使有較帳戶和區域中更多的串流，Kinesis Data Streams 可能傳回較指定的限制所指定之更少的串流。為了確保會擷取所有串流，請使用下一個程式碼範例中所述的 `getHasMoreStreams` 方法。

```
while (listStreamsResult.getHasMoreStreams()) 
{
    if (streamNames.size() > 0) {
      listStreamsRequest.setExclusiveStartStreamName(streamNames.get(streamNames.size() - 1));
    }
    listStreamsResult = client.listStreams(listStreamsRequest);
    streamNames.addAll(listStreamsResult.getStreamNames());
}
```

此程式碼會呼叫 `getHasMoreStreams` 上的 `listStreamsRequest` 方法，來查看在對 `listStreams` 的初始呼叫中傳回的那些串流以外，是否有額外的可用串流。如果有，程式碼會以之前對 `setExclusiveStartStreamName` 呼叫中傳回的最後一個串流的名稱來呼叫 `listStreams` 方法。`setExclusiveStartStreamName` 方法會造成接下來對 `listStreams` 的呼叫在該串流之後開始。然後該呼叫傳回的串流名稱群組會新增到 `streamNames` 清單。此程序會持續，直到已收集清單中的所有串流名稱為止。

 `listStreams` 傳回的串流可以是以下其中一個狀態：
+ `CREATING`
+ `ACTIVE`
+ `UPDATING`
+ `DELETING`

您可以使用 `describeStream` 方法來查看串流的狀態，如先前的小節[使用 APIs 建立串流](kinesis-using-sdk-java-create-stream.md)中所述。