如何在不使用Java下载到本地文件的情况下获取Azure blob?
(对于Azure For SDK 10)我可以将文件下载到内存,但我只想将其下载到blob或其他本地对象如何在不使用Java下载到本地文件的情况下获取Azure blob?,java,azure,azure-storage-blobs,azure-blob-storage,Java,Azure,Azure Storage Blobs,Azure Blob Storage,(对于Azure For SDK 10)我可以将文件下载到内存,但我只想将其下载到blob或其他本地对象 BlockBlobURL似乎有一个下载函数,但它只返回一个对象:有没有更直接的方法来获取blob内容 链接描述下载到文件 我正在寻找Java的等价物 您可以使用下面的示例代码直接获取blob内容(而不是本地文件),请尝试 import com.microsoft.azure.storage.CloudStorageAccount; import com.microsoft.azure.st
- BlockBlobURL似乎有一个下载函数,但它只返回一个对象:有没有更直接的方法来获取blob内容
- 链接描述下载到文件
- 我正在寻找Java的等价物
import com.microsoft.azure.storage.CloudStorageAccount;
import com.microsoft.azure.storage.blob.CloudBlob;
import com.microsoft.azure.storage.blob.CloudBlobClient;
import com.microsoft.azure.storage.blob.CloudBlobContainer;
import org.apache.commons.io.IOUtils;
import java.io.InputStream;
import java.io.InputStreamReader;
public class GetBlobContent {
public static final String storageConnectionString =
"DefaultEndpointsProtocol=http;" +
"AccountName=***;" +
"AccountKey=***";
public static void main(String[] args) {
try {
CloudStorageAccount storageAccount = CloudStorageAccount.parse(storageConnectionString);
CloudBlobClient blobClient = storageAccount.createCloudBlobClient();
CloudBlobContainer container = blobClient.getContainerReference("jay");
CloudBlob blob = container.getBlockBlobReference("test.txt");
InputStream input = blob.openInputStream();
InputStreamReader inr = new InputStreamReader(input, "UTF-8");
String utf8str = IOUtils.toString(inr);
System.out.println(utf8str);
System.out.println("download success");
} catch (Exception e) {
// Output the stack trace.
e.printStackTrace();
}
}
}
BlobURL有一个低级接口,我可以从中提取字节流。这是我的解决办法:
ByteBuffer byteBuffer = blobURL.download(null, null, false, null)
.blockingGet() // DownloadResponse
.body(null) // Flowable<ByteBuffer>
.firstOrError()
.blockingGet();
ByteBuffer ByteBuffer=blobURL.download(null,null,false,null)
.blockingGet()//下载响应
.body(null)//可流动
.firstOrError()
.blockingGet();
不幸的是,这是Azure的旧版,看起来像。我想知道在稳定版本中是否有办法做到这一点。@svenka根据我的研究,java sdk没有像python那样提供get\u blob\u to\u text
函数。如果您遵守官方文件中提供的下载到文件功能:。它仍然由FileOutputStream
实现。您好@jay gong,谢谢您的登录!我最终使用了BlobURL类中提供的较低级别下载API。它很挑剔,因为它还单身。我将在解决方法中添加一个答案:)