下载流数据中的文件后,没有从 Azure Blob 存储中读取任何内容

问题描述 投票:0回答:1

我使用以下代码从 Azure Blob 存储中获取文件,但

downloadedData
始终为空字符串。我引用了这个MS document来从该位置读取文件。该文件不为空并且包含值。我尝试了多种类型的文件 - 文本、pdf 等。但对于所有
downloadedData
都是空的。我该如何解决这个问题?

      BlobAsyncClient blobAsyncClient = containerClient.getBlobAsyncClient("abc/file1.txt");
            ByteArrayOutputStream downloadData = new ByteArrayOutputStream();

            blobAsyncClient.downloadStream().subscribe(piece -> {
                try {
                    downloadData.write(piece.array());
                } catch (IOException ex) {
                    throw new UncheckedIOException(ex);
                }
            });
azure azure-blob-storage azure-java-sdk azure-sdk-for-java
1个回答
0
投票

问题是因为您正在调用异步方法,但没有等待完成。

您可以调用 .blockLast() 方法,或者使用 doOnComplete()。

blobAsyncClient.downloadStream().subscribe(piece -> {
    try {
        downloadData.write(piece.array());
    } catch (IOException ex) {
        throw new UncheckedIOException(ex);
    }
}).blockLast();

blobAsyncClient.downloadStream().doOnNext(piece -> {
    try {
        downloadData.write(piece.array());
    } catch (IOException ex) {
        throw new UncheckedIOException(ex);
    }
}).doOnComplete(() -> {
    // This ensures that the downloadData is not accessed until it's fully populated
}).subscribe();
© www.soinside.com 2019 - 2024. All rights reserved.