将 blob(文本文件)作为 UTF8 从 Azure 存储下载到内存?

Download blob (text file) from Azure storage to memory as UTF8?

我正在从我的 blob 存储中下载一个文本文件,我想保留文件的内容(编码等)。

downloadText()downloadText("UTF-8",null,null,null) 有区别吗?或者有更好的方法吗?

一些测试代码:

CloudStorageAccount storageAccount = CloudStorageAccount.parse(Blob.storageConnectionString);
        CloudBlobClient blobClient = storageAccount.createCloudBlobClient();
        CloudBlobContainer container = blobClient.getContainerReference("myblob");

        CloudBlockBlob blob = container.getBlockBlobReference("mydir/myfile.txt");

        String txt1 = blob.downloadText();
        String txt2 = blob.downloadText("UTF-8", null, null, null); 

视情况而定。字符集用于将文本文件转换为字节数组(末尾的 blob 是什么)。因此,您应该应用已用于将文本文件上传到 blob 的相同编码,以保留文件的原始上下文。当您调用不带参数的 downloadText() 时,java 会尝试使用系统 file.encoding 属性 中定义的默认字符编码。但是,这可能会导致不良结果。

downloadText函数带参数和不带参数的区别是使用默认平台编码还是使用指定编码,可以参考ClassCloudBlockBlobhttp://azure.github.io/azure-sdk-for-java/.[=13=的javadoc ]

根据我的经验,您可以下载文本内容blob并将其转换为UTF8字符串,如下代码。

InputStream input =  blob.openInputStream();
InputStreamReader inr = new InputStreamReader(input, "UTF-8");
String utf8str = org.apache.commons.io.IOUtils.toString(inr);

此致。