是否可以从最终的Azure Blob存储中读取文本文件?

时间:2016-05-10 18:11:41

标签: azure azure-storage-blobs

我有相当大的blob文件,我需要阅读和摄取最新的几行信息。是否有一个API(C#)从最后读取文件,直到我想停止,以便我的应用程序可以获取最小的信息?

2 个答案:

答案 0 :(得分:3)

您应该已经知道BlockBlobs是为sequential访问而设计的,而Page Blob是为random访问而设计的。和AppendBlobs for Append操作,在你的情况下不是我们想要的。

我相信你的解决方案是将你的blob保存为PageBlob而不是默认的BlockBlob。一旦你有了一个Page Blob,你就会有很好的方法,比如GetPageRangesAsync,它会返回一个IEnbumerable PageRange。后者覆盖ToString()方法,为您提供页面的字符串内容。

答案 1 :(得分:2)

恭敬地,我不同意答案。虽然Page Blobs专为随机访问而设计,但它们可以用于不同目的。

我也同意Block Blobs是为顺序访问而设计的,但是没有什么能阻止你从中间读取块blob的内容。由于支持块blob中的范围读取,因此您完全可以读取块blob的部分内容。

举个例子,假设您有一个10 MB的blob(blob size = 10485760字节)。现在你想从底部读取blob。假设您希望一次读取1MB块,您可以调用DownloadRangeToByteArrayDownloadRangeToStream(或其异步变体)并指定9437184(9MB标记)作为起始范围和{{1} }(10MB标记)作为结束范围。阅读内容,看看您是否找到了您正在寻找的内容。如果没有,你可以阅读blob的内容从8MB到9MB并继续这个过程。